pytz tzname 的奇怪问题

Posted

技术标签:

【中文标题】pytz tzname 的奇怪问题【英文标题】:Weird issue with pytz tzname 【发布时间】:2021-09-19 05:03:28 【问题描述】:

当我注意到这种歧义时,我正在使用一些时区代码。在尝试获取亚洲/新加坡的 tzname 时,我得到了 UTC 偏移量。如果我对亚洲/加尔各答做同样的事情,我会得到正确的时区名称 - IST。

pytz.timezone('Asia/Singapore').tzname(datetime.now())
'+08'
pytz.timezone('Asia/Kolkata').tzname(datetime.now())
'IST'

这种含糊不清是否有原因,是否有一种解决方法可以为我提供实际的时区代码,即 SGT?

【问题讨论】:

这能回答你的问题吗? How to use abbreviated timezone name(PST, IST) in Pytz 【参考方案1】:

我认为 pytz 在时区缩写列表中没有“SGT”。我有以下代码:

from datetime import datetime as dt
common_name = pytz.timezone('Asia/Singapore')
abbr = common_name.localize(dt.now(), is_dst=None)
print(abbr.tzname())

它给了我输出+08。 Bu 适用于其他区域,例如:

from datetime import datetime as dt
common_name = pytz.timezone("US/Pacific")
abbr = common_name.localize(dt.now(), is_dst=None)
print(abbr.tzname())

它给了我PDT。我尝试了其他几个时区,似乎它们的列表中没有包含 SGT。也许他们会在未来的版本中拥有它,但现在他们只是没有。

【讨论】:

以上是关于pytz tzname 的奇怪问题的主要内容,如果未能解决你的问题,请参考以下文章

python(pytz)中的奇怪时区行为

pytz 和 datetime 奇怪的行为 - 可能的错误?

pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]

pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]

pytz.timezone 显示亚洲/加尔各答的奇怪结果? [复制]

python / pytz问题从本地时区转换为UTC然后返回