在我的Ubuntu Linux系统上,系统时区已正确设置为
该系统正在运行 Python 3.10.8 和 Ubuntu 22.04.1 LTS。
我是否对Python的时区有所误解?发生了什么?如何使python的 time.tzname 与系统时区 PST 匹配?我不想在自己的python脚本中手动硬编码时区 - 我只想使用当前系统的本地时区。
America/Vancouver
:$ file /etc/localtime
/etc/localtime: symbolic link to /usr/share/zoneinfo/America/Vancouver
$ date
Thu 17 Nov 10:31:38 PST 2022
$ date '+%Y-%m-%d %H:%M:%S%z'
2022-11-17 10:32:57-0800
$ date '+%Y-%m-%d %H:%M:%S%Z'
2022-11-17 10:33:04PST
这一切都是正确的,正如预期的那样。
然而,Python似乎认为 它 的时区是UTC:
$ python -c "import time; print(time.tzname); print(time.localtime());"
('UTC', 'UTC')
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=17, tm_hour=18, tm_min=34, tm_sec=0, tm_wday=3, tm_yday=321, tm_isdst=0)
$ python -c 'from datetime import datetime; print(datetime.utcnow()); print(datetime.now());'
2022-11-17 18:34:38.878930
2022-11-17 18:34:38.878956
该系统正在运行 Python 3.10.8 和 Ubuntu 22.04.1 LTS。
我是否对Python的时区有所误解?发生了什么?如何使python的 time.tzname 与系统时区 PST 匹配?我不想在自己的python脚本中手动硬编码时区 - 我只想使用当前系统的本地时区。
pytz
和dateutil
这样的外部库被广泛使用,我在尝试了标准模块处理时区后也走了同样的路线。在我看来,这绝对是太棘手了。 - 0x0fba