1

有谁知道如何在 Windows 中获取缩写的时区名称?

我正在使用此代码获取时区名称,但没有获取缩写时区。

time(&ltime);
newtime = localtime(&ltime);
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

谢谢,

4

2 回答 2

2

时区缩写没有通用标准。您可以在此处查看列表,但即便如此,仍有一些未列出或不明确。

例如,有些人使用HAST夏威夷,而其他人使用HST是因为他们不太关心阿拉斯加的阿留申群岛(这A是应该代表的)。

此外,值CST可以是“Central Standard Time”(美国)、“China Standard Time”或“Cuba Standard Time”。 EST可以是“东部标准时间”(美国)或“东部标准时间”(澳大利亚)。

我可以继续一整天。关键是,您应该只在向人类显示时间时使用时区缩写,并且仅在存在其他隐含上下文(如位置)时使用。如果你想要一个用于这些场景的,你将需要在你的应用程序中使用一些条件逻辑,任何你都需要小心避免做出错误假设,即偏移量可以直接转换为时区或单个缩写。

您可能会想出一个完整 IANA/Olson 时区的缩写,但您将需要一个 TZDB 实现——这在 Windows 上的 C 语言中不是本机的。有关更多详细信息,请参阅此问题和答案

有一些规范(例如RFC822)使用时区缩写,但它们只定义了其中的一小部分,并且主要针对美国。它们往往不会被包括在任何更现代或具有全球影响力的事物中。

于 2013-08-16T18:30:02.953 回答
0

文档状态%Z返回_

“时区名称或时区缩写,取决于注册表设置;如果时区未知,则无字符”

所以你很难得到你想要的东西strftime

于 2013-08-16T11:37:41.260 回答