gpt4 book ai didi

python - 无法弄清楚python中的TZ问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:01 25 4
gpt4 key购买 nike

我不明白python是怎么计算时间的。对我来说似乎不一致。

我的服务器时间是:

admin@httstools ~ $ date
Fri Dec 21 17:00:51 PST 2018

在 python 解释器中我得到了预期的结果(即 2018-12-21):

admin@httstools ~ $ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> import datetime
>>> str(datetime.date.today())
'2018-12-21'
>>>

但如果我弄乱了时区,事情就会变得棘手:

>>> time.tzname[time.localtime().tm_isdst]
'PST'

PST 是正确的时区。但是,如果我将我的环境设置为那个 TZ,然后再次运行之前的命令,我会得到一个不同的日期,这显然是不正确的:

>>> os.environ['TZ'] = time.tzname[time.localtime().tm_isdst]
>>> str(datetime.date.today())
'2018-12-22'
>>>

预期结果为 2018-12-21,TZ 变量设置为“PST”。

作为后续,我可以在 python 中运行什么命令,它总是根据我的位置返回正确的日期/时间。

最佳答案

这是我对发生的事情的猜测(我目前没有 Linux 系统可以测试)。

如果您检查 TZ 环境变量,您会发现它实际上应该是语法“America/Pacific”而不是“PST”(PST 只是用于打印目的的缩写)。当通过 TZ 环境变量传递无效值时,我猜 Python 会回退到 UTC 作为合理的默认值。

太平洋标准时间下午 5:00 的 UTC 时间恰好是第二天的午夜,这就是您得到不同日期的原因。

关于python - 无法弄清楚python中的TZ问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com