有谁知道如何在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
谢谢,
答案 0 :(得分:2)
时区缩写没有通用标准。您可以查看列表here,但即便如此,也有一些未列出或含糊不清。
例如,有些人使用HAST
代表夏威夷,而其他人则使用HST
,因为他们可能不太关心阿拉斯加的阿留申群岛(这是A
应该代表的)。
此外,CST
之类的值可能是“中央标准时间”(美国),“中国标准时间”或“古巴标准时间”。 EST
可以是“东部标准时间”(美国),也可以是“东部标准时间”(澳大利亚)。
我可以一整天都去。关键是,在向人类显示时间时,您应该只使用时区缩写,并且只有在存在其他隐含的上下文(如位置)时才应使用时区缩写。如果你想要这些场景,你需要在你的应用程序中使用一些条件逻辑,任何你需要小心避免做出错误的假设,即偏移可以直接转换为时区或单个缩写。
您可以为完整的IANA / Olson时区提供缩写,但是您需要一个TZDB实现 - 这在Windows上的C语言中不是原生的。有关详细信息,请参阅this question and answer。
有一些规范,例如RFC822使用时区缩写,但它们只定义了少数几个,并且主要用于美国。他们往往不会被包括在更现代或具有全球影响的任何事物中。
答案 1 :(得分:0)