我问了先前的问题here,关于标记夏令时。 @MattMessersmith友好而专业地回答了我的问题,他的解决方案在Linux (Ubuntu)上运行完美,在我的两台Windows机器上都无法运行(工作和家庭)。
如果有帮助,我的Windows机器都运行带有Python 3.6和pytz 2018.4的Anaconda。
在Windows上运行代码时,出现以下错误:
Traceback (most recent call last):
File "<ipython-input-185-ed30519c4311>", line 1, in <module>
transition_times = [t.astimezone(tz) for t in transition_times]
File "<ipython-input-185-ed30519c4311>", line 1, in <listcomp>
transition_times = [t.astimezone(tz) for t in transition_times]
OSError: [Errno 22] Invalid argument
以下是在我的Windows计算机上产生错误的代码:
from pytz import timezone
# Map transition times to year for some efficiency gain
tz = timezone('America/Denver')
transition_times = tz._utc_transition_times[1:]
transition_times = [t.astimezone(tz) for t in transition_times]
答案 0 :(得分:2)
这是一个错误:[Windows] datetime.fromtimestamp(t) when 0 <= t <= 86399 fails on Python 3.6。
因为datetime object
中的某些tz._utc_transition_times[1:]
小于1970-01-01 00:00:00.000
。