代码之家  ›  专栏  ›  技术社区  ›  nickos556

python dateutil-Linux与Windows上的不同行为

  •  -1
  • nickos556  · 技术社区  · 11 年前

    为什么我在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)
    

    在窗口上,我得到:

    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 回复  |  直到 11 年前
        1
  •  0
  •   jfs    11 年前

    我明白了 datetime(2015, 3, 19, 0, 0) 在我的Linux机器上( 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 无论当地时区是什么,都不会是本月的第三个星期四。

    尝试更新您的 dateutil 版本。