为什么此代码适用于 Linux 但不适用于 Windows?

Why does this code work on Linux but not on Windows?

我问过一个关于标记夏令时的问题 。 @MattMessersmith 亲切而专业地回答了我的问题,他的解决方案 在 Linux (Ubuntu)、 中完美运行,但在我的任何一个 Windows 机器(工作和家庭)。

我的 Windows 机器都是 运行ning Anaconda with Python 3.6 和 pytz 2018.4,如果有帮助的话。

当我 运行 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]

这是一个错误:[Windows] datetime.fromtimestamp(t) when 0 <= t <= 86399 fails on Python 3.6

因为tz._utc_transition_times[1:]中有些datetime object小于1970-01-01 00:00:00.000.