将 joda 时区映射到 windows 时区(例如在 C# 中)
mapping joda timezone to windows timezone (for example in C#)
我无法将 joda 时区映射到 windows 时区。
我使用 CLDR mappings 的 xml,它适用于大多数翻译。
然而,它没有几个 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
字段中的第一个条目,则使用第一个条目。示例:
<type name="aumel" description="Melbourne, Australia"
alias="Australia/Melbourne Australia/Victoria"/>
您可以看到 Australia/Victoria
作为第二项,因此它是 Australia/Melbourne
的别名。请注意,CLDR 的规范区域与 TZDB 的规范定义并不完全匹配,因此请使用这些 CLDR 映射 - 而不是来自 tzdb 的 link
条目。
现在检查 /common/supplemental/windowsZones.xml
文件。示例:
<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's list。这些可以是缩写或规则名称,但它们不是区域标识符。
我无法将 joda 时区映射到 windows 时区。
我使用 CLDR mappings 的 xml,它适用于大多数翻译。
然而,它没有几个 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
字段中的第一个条目,则使用第一个条目。示例:<type name="aumel" description="Melbourne, Australia" alias="Australia/Melbourne Australia/Victoria"/>
您可以看到
Australia/Victoria
作为第二项,因此它是Australia/Melbourne
的别名。请注意,CLDR 的规范区域与 TZDB 的规范定义并不完全匹配,因此请使用这些 CLDR 映射 - 而不是来自 tzdb 的link
条目。现在检查
/common/supplemental/windowsZones.xml
文件。示例:<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's list。这些可以是缩写或规则名称,但它们不是区域标识符。