有谁知道如何在 Windows 中获取缩写的时区名称?
我正在使用此代码获取时区名称,但没有获取缩写时区。
time(<ime);
newtime = localtime(<ime);
strftime(sDate, 80,"%a, %d %b %Y %H:%M:%S %Z", newtime);
输出:2013 年 8 月 16 日星期五 14:45:27 印度标准时间
预计产出 2013 年 8 月 16 日星期五 14:45:27 IST
谢谢,
时区缩写没有通用标准。您可以在此处查看列表,但即便如此,仍有一些未列出或不明确。
例如,有些人使用HAST
夏威夷,而其他人使用HST
是因为他们不太关心阿拉斯加的阿留申群岛(这A
是应该代表的)。
此外,值CST
可以是“Central Standard Time”(美国)、“China Standard Time”或“Cuba Standard Time”。 EST
可以是“东部标准时间”(美国)或“东部标准时间”(澳大利亚)。
我可以继续一整天。关键是,您应该只在向人类显示时间时使用时区缩写,并且仅在存在其他隐含上下文(如位置)时使用。如果你想要一个用于这些场景的,你将需要在你的应用程序中使用一些条件逻辑,任何你都需要小心避免做出错误假设,即偏移量可以直接转换为时区或单个缩写。
您可能会想出一个完整 IANA/Olson 时区的缩写,但您将需要一个 TZDB 实现——这在 Windows 上的 C 语言中不是本机的。有关更多详细信息,请参阅此问题和答案。
有一些规范(例如RFC822)使用时区缩写,但它们只定义了其中的一小部分,并且主要针对美国。它们往往不会被包括在任何更现代或具有全球影响力的事物中。