Datetime 时区文件+;缩写->;长名称(优于CLDR)
(这个问题类似于 但不同)Datetime 时区文件+;缩写->;长名称(优于CLDR),datetime,timezone,Datetime,Timezone,(这个问题类似于 但不同) /usr/share/zoneinfo中的每个时区文件都有0个或多个时区 缩写。例如,America/Chicago有五个缩写: CDT,CPT,CST,CWT和EST。作为参考,我通过这样做发现: cd /usr/share/zoneinfo zdump -v America/Chicago | perl -anle 'print $F[13]' | sort | uniq 在某种意义上,文件和缩写的每一个组合都代表一个 不同的时区。以美国/芝加哥为例,并非所
/usr/share/zoneinfo
中的每个时区文件都有0个或多个时区
缩写。例如,America/Chicago
有五个缩写:
CDT
,CPT
,CST
,CWT
和EST
。作为参考,我通过这样做发现:
cd /usr/share/zoneinfo
zdump -v America/Chicago | perl -anle 'print $F[13]' | sort | uniq
在某种意义上,文件和缩写的每一个组合都代表一个
不同的时区。以美国/芝加哥为例,并非所有这些
时区仍在使用
我的问题:在哪里可以找到文件名/缩写的列表
映射到长格式时区名称的组合
我正在寻找的“美国/芝加哥”部分可能是这样的:
Filename Abbreviation Full Name
America/Chicago CDT Central Daylight Time
America/Chicago CPT [no longer used]
America/Chicago CST Central Standrad Time
America/Chicago CWT [no longer used]
America/Chicago EST Eastern Standard Time
(我同意没有命名未使用的时区)
我熟悉CLDR(),但是
common/supplemental/windowsZones.xml
中的文件似乎是
非常不准确(也有点不完整,但事实并非如此)
作为一件大事)。例如,此行(唯一与CST6CDT
匹配的行):
声明CST6CDT
时区的名称为“中央标准”
“时间”,这是不正确的
CST6CDT
一般称为“中央时间”,是GMT-5(“中央时间”)
夏令时和GMT-6(“中央
标准时间“),夏令时以外的时间
全年称之为“中央标准时间”是不正确的。叫它
全年的“中央时间”是可以接受的,但最好是
区分标准时间和白天时间
我考虑找一个“长名字缩写”的翻译,
但这不起作用,因为/usr/share/zoneinfo会重复
缩写。例如,“东部标准时间”在美国是指“东部标准时间”
文件“EST5EDT”,但文件中为“澳大利亚东部标准时间”
“澳大利亚/墨尔本”
我考虑过使用common/supplemental/windowsZones.xml
,然后
如果将isdst标志设置为
我正在考虑具体的时间,但这似乎很困难
谢谢你的帮助 CLDR不仅仅是windows映射文件,而且windows ID也不是显示名称。今天晚些时候,我将在回答中详细阐述。在我开始回答较长的问题之前,先问一个问题-您使用的是什么编程语言?如果是Java或C,那么答案就是简单地使用它,它已经正确地使用了CLDR,并为您提供了简单的函数来获取短名称和长名称的通用、标准和日光形式。如果您计划直接使用CLDR,那么您真的应该彻底阅读本手册的第5、6和7节。@MattJohnson,我想我在相关问题中回答了我自己的问题。可能应该在这里指出。好的,然后继续并关闭这个。尽管我仍然建议您阅读规范,因为它可能比仅仅从单个xml文件中读取更复杂。您还必须考虑元区域、重写、基于位置的格式设置缺省值、语言内的区域层次结构等。如我所说,如果可以的话,使用库。
<mapZone other="Central Standard Time" territory="ZZ" type="CST6CDT"/>