如何获得由地区字符串
日历类型正如你所知道ICU支持以下日历:如何获得由地区字符串
Japanese
Buddhist
Chinese
Persian
Indian
Islamic
Hebrew
Indian
Coptic
Ethiopic
然而IntlDateFormatter
仅日期公历格式转换为语言环境和不会自动转换日历,但它有可能发送给它的日历,它会做的伎俩。问题是我必须为每个区域设置手动确定日历系统。
如何从语言环境字符串获取日历类型。例如发送fa_IR
我需要'波斯',所以发送它到IntleDateFormatter生成该语言环境的数据字符串。
总之;你不能。为什么?
让我们来看看这两个对象是什么: IntlDateFormatter
是国际化扩展的一部分,它是为执行各种区域感知操作而构建的。这些操作包括日期格式化程序和区域识别日历。
Locale class
是用于获取语言,文化或区域特定行为的标识符。
尽管它们是相同扩展的一部分,但它们是正交的,如here所述。这意味着你不能从另一个中确定一个。该声明在ICU项目提供的用户指南中得到进一步验证。
...目前,除兼容性语言环境th_TH_TRADITIONAL和ja_JP_TRADITIONAL以外,所有语言环境默认为公历日历。如果提供“日历”关键字,则此值将覆盖该语言环境的默认值。
Source: User guide ICU project
作为报价状态中的任何区域设置默认为除非提供了“日历”关键字公历。他们不能从自动提供的语言环境中派生日历。
解决您的问题最有可能发现在自己构建包装。互联网上有一些软件包可以帮助你解决这个问题,但它远不及你想要的东西。如果您需要保存日期,请将其保存为时间戳并以用户所需的格式显示,后者是您可以自由执行某些帐户设置或任何类似操作。
我在寻求答案中找到灵感的一个模块是GlobalizeJS。有一个开放的open issue,描绘了一个有趣的图片,说明它的正确性有多困难。以阿拉伯联合酋长国(AE)为例,他们有五种日历偏好;格里高利,伊斯兰教乌姆拉古拉,伊斯兰教,伊斯兰教民间和伊斯兰教表格。我会让用户确定他们喜欢哪个日历,以便它们最适合他们。
祝你好运!
可能要考虑这一点。请参阅:https://stackoverflow.com/a/44395179/1219741 – jaswrks