日历系统名称的国际标准

时间:2013-09-22 00:47:00

标签: date internationalization calendar standards gregorian-calendar

是否有国际(或广泛使用)标准代码来指定日历系统的名称?

我正在开发一个应用程序(除其他外)在多个日历系统中存储和显示历史日期,例如Gregorian,Jewish,Hijri等。存储日期时,我需要能够说出它所处的日历系统。

我可以发明我自己的系统,但是那里已经存在一些东西,类似于ISO 639的语言?经过长时间的搜索,我找不到任何东西,但也许我一直在使用错误的术语。

1 个答案:

答案 0 :(得分:3)

有效问题;最好不要将任意代码用于此类事情。

您只需使用CLDR使用的values of name attribute

<key name="ca" description="Calendar algorithm key" alias="calendar">
   <type name="buddhist" description="Thai Buddhist calendar"/>
   <type name="chinese" description="Traditional Chinese calendar"/>
   <type name="coptic" description="Coptic calendar"/>
   ...
   <type name="islamicc" description="Civil (algorithmic) Arabic calendar" deprecated="true" preferred="islamic-civil" alias="islamic-civil"/>
</key>

但您也可以调整CLDR数据定义中使用的方法,该方法包括使用BCP47(“识别语言的标记”)扩展名{{3}用于“使用语言标记识别基于Unicode语言环境的变体。此扩展名的'singleton'标识符为'u'”。例如,泰语由​​th标识。因此,th-u-ca-buddhist将区域设置标识为泰语,并支持佛教日历:

  th-u-ca-buddhist
     |  |  |
     |  |  +--> Calendar name (values in CLDR bcp47/calendar.xml).
     |  +-----> 2 char key defining extension to follow (here "ca" for calendar).
     +--------> Identifies that extension U values are to follow.

几乎没有更多的扩展用法示例:

  • fa-u-ca-islamic-rgsa:有伊斯兰历法的波斯语,沙特阿拉伯目击。
  • fa-u-ca-persian:波斯语的波斯语。
  • fa_AF-u-ca-persian:波斯语的波斯语(阿富汗语)。

显然,如果您的目的只是存储日历和日历的标识符,您可以使用en;即。

  { 'year': 1392, 'month': 6 , 'day': 31 , 'calendar': 'en-u-ca-persian' }