首页 文章

将joda时区映射到windows时区(例如在C#中)

提问于
浏览
2

我无法将joda时区映射到Windows时区 .

我使用CLDR mappings的xml,它适用于大多数翻译 .

尽管如此,它没有几个joda时区的 Value :

美国/印第安纳州/印第安纳波利斯,BST,澳大利亚/维多利亚,环球,澳大利亚/新南威尔士州,美国/ Fort_Wayne,非洲/阿斯马拉,美国/肯塔基州/路易斯维尔,亚洲/喀什,美国/太平洋,澳大利亚/西部,澳大利亚/昆士兰州,澳大利亚/南,美国/东部,美国/中部,美国/亚利桑那州,澳大利亚/塔斯马尼亚州,新西兰,美国/山区,澳大利亚/ Eucla,GMT,日本,CAT,等等/ GMT 0,CST,PST,EST,澳大利亚/堪培拉,墨西哥/将军,以色列,加拿大/东部,等等/格林威治标准时间9,加拿大/中部,澳大利亚/北部

我在哪里可以找到这些joda时区与windows时区之间的映射?

1 回答

  • 1

    使用纯CLDR数据:

    如果它不是 alias 字段中的第一个条目,则使用第一个条目 . 例:

    <type name="aumel" description="Melbourne, Australia"
                       alias="Australia/Melbourne Australia/Victoria"/>
    

    您可以将 Australia/Victoria 视为第二项,因此它是 Australia/Melbourne 的别名 . 请注意CLDR 's canonical zones are not exactly matched to TZDB'的规范定义,因此请使用这些CLDR映射 - 而不是来自tzdb的 link 条目 .

    <mapZone other="AUS Eastern Standard Time" territory="AU"
             type="Australia/Sydney Australia/Melbourne"/>
    

    type 字段包含一个或多个tzdb区域 . other 字段包含相应的Windows区域 .

    • 请注意,并非所有tzdb区域都具有有效的相应Windows区域,有些区域不是完美的映射 .

    • 不完美映射示例: America/Havana => Eastern Standard Time

    • DST过渡日对齐,但古巴在午夜而不是凌晨2点过渡

    • 不可映射区域示例: Australia/Lord_Howe

    • 存在于timezone.xml中,但不存在于windowsZones.xml中 .

    • 此位置目前没有Windows时区条目 .

    • 您的列表中有一些项目( BSTCATCSTPST ),这些项目无效tzdb区域,即使是Joda-Time's list . 这些可以是缩写或规则名称,但它们不是区域标识符 .

相关问题