Linux与Windows上的python dateutil -different行为

时间:2015-02-27 06:58:55

标签: python python-dateutil

为什么我在Windows vs. Linux上获得此代码的不同结果:

In [1]: from dateutil.rrule import rrule, DAILY, MONTHLY, MO, TU, WE, TH, FR

In [2]: from datetime import date, datetime

In [3]: r = rrule(MONTHLY, byweekday=TH(3), bymonth=(3,6,9,12), dtstart=datetime(2009,3,19))

In [4]: r.after(datetime(2015,3,1,12))
Out[4]: datetime.datetime(2015, 3, 5, 0, 0)

在Windows上我得到:

In [1]: from dateutil.rrule import rrule, DAILY, MONTHLY, MO, TU, WE, TH, FR

In [2]: from datetime import date, datetime

In [3]: r = rrule(MONTHLY, byweekday=TH(3), bymonth=(3,6,9,12), dtstart=datetime(2009,3,19))

In [4]: r.after(datetime(2015,3,1,12))
Out[4]: datetime.datetime(2015, 3, 19, 0, 0)

请注意,这些机器位于不同的时区。

1 个答案:

答案 0 :(得分:0)

我在Linux机器上datetime(2015, 3, 19, 0, 0)获得了正确的dateutil-2.0

>>> import calendar
>>> calendar.prmonth(2015, 3)
     March 2015
Mo Tu We Th Fr Sa Su
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

在这种情况下,本地时区无关紧要 - 2015-03-19可能对应不同时区的不同UTC时间,但只要使用公历,2015-03-05就不会成为第3时间无论当地时区如何,本月四月。

尝试更新Linux计算机上的dateutil版本。