NumberFormatter::create() - NumberFormatter类
NumberFormatter::create()
numfmt_create
NumberFormatter::__construct
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Create a number formatter
说明
面向对象风格(method)
publicstaticNumberFormatter::create(string $locale,int $style[,string $pattern]): NumberFormatter过程化风格numfmt_create(string $locale,int $style[,string $pattern]): NumberFormatter
面向对象风格(constructor):
publicNumberFormatter::__construct(string $locale, int $style[,string $pattern])Creates a number formatter.
参数
$localeLocale in which the number would be formatted(locale name, e.g. en_CA).
$style Style of the formatting, one of the format style constants. If NumberFormatter::PATTERN_DECIMAL
or NumberFormatter::PATTERN_RULEBASED
is passed then the number format is opened using the given pattern, which must conform to the syntax described in » ICU DecimalFormat documentation or » ICU RuleBasedNumberFormat documentation, respectively.
Pattern string if the chosen style requires a pattern.
返回值
Returns NumberFormatter object or FALSE
on error.
范例
numfmt_create() example
NumberFormatter::create() example
以上例程会输出:
1.234.567,891 millicentoquarantadue
参见
- numfmt_format() Format a number
- numfmt_parse() Parse a number
It should be noted that the locale string passed into NumberFormatter's constructor doesn't play with UCA keywords quite as readily as, say, the Collator and IntlDateFormatter classes' constructors. According to the Unicode spec (http://www.unicode.org/reports/tr35), I should be able to specify a locale of "ja_JP@numbers=jpanfin" which, for spellout mode, should give me Japanese financial (ie. anti-forgery) numerals. When passed into NumberFormatter's constructor, "ja_JP@numbers=jpanfin" doesn't work. However, when I look at a dump of NumberFormatter::getPattern() for the ja_JP locale, I see that the financial numerals *are* in there (as %financial). Here's how we wrangle them out of the NumberFormatter:
When formatting durations using the NumberFormatter::DURATION type, you may also need to use NumberFormatter::setTextAttribute to get the desired output. This is a little counter-intuitive because there is not much doc available about the DURATION type. Also, as far as I can tell, only the English (en) locale has support for the "%in-numerals" & "%with-words" rulesets. Other locales seem to simply format the input as if the DECIMAL type had been used (at least using "fr" or "de" as the target locale). One way to provide that feature across different locales is to extract the ruleset implicitely used by NumberFormatter::DURATION and adapt it for the locales you're targetting. Use NumberFormatter::getPattern to extract the ruleset.
Although there are ORDINAL and SPELLOUT formatters, it's not possible to join these together to turn "2" into "second". You'll either get "2nd", or "two", or something unexpected if you try to use bitwise operators.
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!