为什么此代码在Linux上有效,但在Windows上无效?

时间:2018-09-29 14:21:59

标签: python linux windows python-3.x pytz

我问了先前的问题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]

1 个答案:

答案 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