mapping joda timezone to windows timezone (for example in C#)
我无法将joda时区映射到Windows时区。
我使用xml的CLDR映射,它适用于大多数翻译。
然而,它没有几个joda时区的价值:
America/Indiana/Indianapolis, BST, Australia/Victoria, Universal,
Australia/NSW, America/Fort_Wayne, Africa/Asmara,
America/Kentucky/Louisville, Asia/Kashgar, US/Pacific, Australia/West,
Australia/Queensland, Australia/South, US/Eastern, US/Central,
US/Arizona, Australia/Tasmania, NZ, US/Mountain, Australia/Eucla, GMT,
Japan, CAT, Etc/GMT+0, CST, PST, EST, Australia/Canberra,
Mexico/General, Israel, Canada/Eastern, Etc/GMT+9, Canada/Central,
Australia/North
我在哪里可以找到这些joda时区与windows时区之间的映射?
使用纯CLDR数据:
-
检查
/common/bcp47/timezone.xml 文件中的区域。如果它不是
alias 字段中的第一个条目,则使用第一个条目。例:1
2<type name="aumel" description="Melbourne, Australia"
alias="Australia/Melbourne Australia/Victoria"/>您可以将
Australia/Victoria 视为第二项,因此它是Australia/Melbourne 的别名。请注意,CLDR的规范区域与TZDB的规范定义不完全匹配,因此请使用这些CLDR映射 - 而不是tzdb中的link 条目。 -
现在检查
/common/supplemental/windowsZones.xml 文件。例:1
2<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时区条目。
-
-
您的列表中的一些项目(
BST ,CAT ,CST ,PST )是无效的tzdb区域,即使是Joda-Time的列表也是如此。这些可以是缩写或规则名称,但它们不是区域标识符。