Python:strftime()UTC偏移在Windows中无法按预期工作
每次使用:
time.strftime("%z")
我得到:
Eastern Daylight Time
但是,我想使用+ HHMM或-HHMM形式的UTC偏移量。我什至尝试过:
time.strftime("%Z")
仍然会产生:
Eastern Daylight Time
我已经阅读了与strftime()相关的其他几篇文章,%z似乎总是以正确的+ HHMM或-
HHMM格式返回UTC偏移量。如何获取strftime()以python 3.3的+ HHMM或-HHMM格式输出?
编辑:我正在运行Windows 7
-
要获得适当的解决方案,请参见
下面的abarnert答案。
您可以使用
time.altzone
,以秒为单位返回负偏移量。例如,我目前正在CEST(UTC
+ 2)上,所以我得到了:>>> time.altzone -7200
并将其放入您想要的格式:
>>> '{}{:0>2}{:0>2}'.format('-' if time.altzone > 0 else '+', abs(time.altzone) // 3600, abs(time.altzone // 60) % 60) '+0200'
如评论中提到的abarnert所示,
time.altzone
当DST处于活动状态时给出偏移量,而time.timezone
在DST不处于活动状态时给出偏移量。要弄清楚使用哪个,您可以按照JF
Sebastian在回答其他问题时所建议的那样进行操作。因此,您可以像这样获得正确的偏移量:time.altzone if time.daylight and time.localtime().tm_isdst > 0 else time.timezone
正如他所建议的那样,您可以在Python
3中使用以下代码通过datetime.timezone获得所需的格式:>>> datetime.now(timezone.utc).astimezone().strftime('%z') '+0200'