Windows中所有时区的显示方式如下
(GMT+10:00) Canberra, Melbourne, Sydney,
(GMT+10:00) Canberra, Melbourne, Sydney
格林尼治标准时间(GMT),偏移量和位置。反过来,Linux在/ usr / share / zoneinfo / [Continent] / [Place]中将每个时区都用作目录映射。
我需要将每个Windows时区映射到我的应用程序的Linux时区。喜欢
(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi => Asia/Calcutta
现在,位于俄罗斯和美国之间的国际日期变更线西出现了问题。在Windows中,它以(GMT-12:00)International Date Line West为标志,并且从各种来源中我发现在Linux中,它的Etc / GMT + 12。
(GMT-12:00) International Date Line West => Etc/GMT+12
也
(GMT+12:00) Coordinated Universal Time+12 => Etc/GMT-12 (GMT-02:00) Coordinated Universal Time-02 => Etc/GMT+2 (GMT-11:00) Coordinated Universal Time-11 => Etc/GMT+11
这让我感到困惑,并且我的应用程序与带有UTC的Timestamp和UTC偏移紧密配合。因此,这种映射使我和应用程序感到困惑。
谁能解释为什么同一位置的偏移量分别为-12和+12?
提前致谢 :)
Unicode.org托管一个映射作为CLDR的一部分。 您可以在此处获取最新版本。从该页面链接的数据还有XML版本。
您可以在此处找到有关如何从XML数据生成映射的示例代码(在Python中)。
必选时区Rant:
请注意,在Windows中实施时区支持的人都是毒品。我不是在开玩笑。查看时区名称。为什么中欧时间被称为“浪漫标准时间”。浪漫吗?什么,因为它包括巴黎,还是?罗马标准时间可能说得通,它也包括罗马,但浪漫!!
另外,在注册表中,时区未按其ID进行组织。不,它们是按其 显示名称 疯狂组织的!由于已本地化,这意味着在Windows的不同翻译版本中,每个时区都将位于不同的键下!!!!因此,要找到正确的时区,您必须查看所有时区以查看哪个时区具有正确的ID。
我在这里也有示例代码。参见get_win_timezone()功能。
get_win_timezone()
我不知道这是谁设计的这一点,决定POSIX应该逆转时区的标志,让-8小时指的是同一个人, 加上 8小时。无论如何,我确定他们一起吸烟是非法的。