python dateutil - Linux 与 Windows 的不同行为
python dateutil -different behaviour on Linux vs. Windows
为什么我在 Windows 和 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)
请注意,这些机器处于不同的时区。
我在 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
就不会是第三个每个月的星期四,无论当地时区是什么。
尝试更新 Linux 机器上的 dateutil
版本。
为什么我在 Windows 和 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)
请注意,这些机器处于不同的时区。
我在 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
就不会是第三个每个月的星期四,无论当地时区是什么。
尝试更新 Linux 机器上的 dateutil
版本。