关于python:在格式化的日期时间字符串中显示时区名称

Display timezone name in formatted datetime string

我想打印本地机器的当前日期和时间,以及时区名称。 但是,我似乎无法得到最后一点

1
2
3
4
5
6
7
In [1]: from datetime import datetime

In [2]: print(datetime.now().strftime('%d %b %Y %H:%M:%S'))
09 Apr 2019 13:23:47

In [3]: print(datetime.now().strftime('%d %b %Y %H:%M:%S %Z'))
09 Apr 2019 13:23:52

我原本希望看到我的PC的时区名称('CET')添加到第二个字符串。 如何得到:

1
09 Apr 2019 13:23:52 CET


基本上,如果您需要系统的时区信息,请使用time库。

1
2
3
>>> import time
>>> time.tzname
('IST', 'IST')

在我的情况下,时区是IST

更新
如果你只想使用datetime模块,有一种hacky方式,但绝对不推荐。 在这个答案中提到了解决方案。 但问题是,这不是完全证据,假设你对印度和斯里兰卡等2个国家有相同的时区差异,那么它将无法识别正确的区域,因为IST和SLST都是GMT + 5:30


那是因为datetime.now的默认tz参数是None

如何指定时区的示例:

1
2
from pytz import UTC
datetime.now(tz=UTC).strftime("%Z")

吐出UTC

如果你想得到你当前的时区,那么:

1
2
import time
time.strftime("%Z", time.gmtime())

就我而言,它是GMT