该功能在ICU 62中实现。有关文档,请参阅:
https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skletons.md
人们通常希望能够使用数字模式来处理他们可以使用的日期-指定他们想要一种货币,最小分数=x,最大分数=y,等等。但他们想要适合当地环境的模式。
http://bugs.icu-project.org/trac/tickt/8610
ICU数字格式化程序支持不同的样式,如百分比、货币、科学或十进制。这些方法可以产生与语言环境相适应的结果,但并不灵活。
您可以使用用户指定的模式创建格式化程序,完全控制有效数字、最小/最大小数位数。。。这种方法的问题是,结果通常不适合语言环境。
将骨架特征引入数字格式,类似于今天的日期格式化程序。框架允许用户指定:
小数位数的最小值和最大值,使用.0#表示法
最小整数位数,使用0。符号
有效位数,使用@字符
格式化程序的类型-如果使用了相应的符号,则为货币或百分比,否则为十进制
如果分组分隔符处于打开或关闭状态,则用户无法指定分隔符的实际位置。
货币符号、ISO 4217代码或名称(如“美元”)是否应用于货币格式-符号/ISO/复数的实际位置取决于地区。
框架语法与当前模式语法类似,但在含义上有一些限制/变化:
cira:我们是否应该允许0-9表示四舍五入,@表示有效数字,\u2030表示每英里,E表示科学数字?
markus:是否应该有一个单独的构建器类,比如DateTimePatternGenerator和DateFormat?
markus:我们是否应该在MessageFormat中支持日期和数字骨架?
!!0,0.000#%
!!¤¤¤0,0.00