为了账号安全,请及时绑定邮箱和手机立即绑定

无法弄清楚python中的TZ问题

无法弄清楚python中的TZ问题

明月笑刀无情 2021-09-23 10:00:14
我不明白python是如何计算时间的。对我来说似乎不一致。我的服务器时间是:admin@httstools ~ $ dateFri Dec 21 17:00:51 PST 2018在 python 解释器中,我得到了预期的结果(即 2018-12-21):admin@httstools ~ $ pythonPython 2.7.5 (default, Nov  6 2016, 00:28:07)[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2Type "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 中运行什么命令,它总是会根据我的位置返回正确的日期/时间。
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

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

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

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


查看完整回答
反对 回复 2021-09-23
  • 1 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信