我不明白python是如何计算时间的。在我看来前后矛盾。在
我的服务器时间是:
admin@httstools ~ $ date
Fri Dec 21 17:00:51 PST 2018
在python解释器中,我得到了预期的结果(即2018-12-21):
^{pr2}$但如果我搞砸了时区,事情就会变得一团糟:
>>> 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时间恰好是第二天的午夜,这就是为什么您得到了不同的日期。在
相关问题 更多 >
编程相关推荐