日历系统名称的国际标准



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

我正在开发一个应用程序,该应用程序(除其他外)在多个日历系统中存储和显示历史日期,例如公历、犹太历、回历等。 存储日期时,我需要能够说出它在哪个日历系统中。

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

有效的问题;最好不要对此类事情使用任意代码。

您可以简单地使用 CLDR 使用name属性的值:

<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的扩展("用于识别语言的标记"),称为RFC6067,用于"使用语言标记识别基于Unicode区域设置的变体"。此扩展的"单例"标识符是"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' }

最新更新