代码之家  ›  专栏  ›  技术社区  ›  Rob Hoare

日历系统名称的国际标准

  •  3
  • Rob Hoare  · 技术社区  · 12 年前

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

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

    我可以发明自己的系统,但是否已经有了类似于ISO 639语言的东西?经过很长时间的搜索,我什么也没找到,但也许我用错了词。

    1 回复  |  直到 12 年前
        1
  •  3
  •   Community Mohan Dere    4 年前

    有效问题;对于这样的事情,最好不要使用任意代码。

    您可以简单地使用 values of name attribute CLDR使用:

    <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区域设置的变体。此扩展的“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' }