第一年的天数不正确

时间:2019-07-30 19:56:41

标签: python datetime

我写了下面的代码,给我年底的某天,该年的支付期开始了。由于某种原因,它告诉我12月1日(一年级)是星期六。在线日历告诉我那是星期四。

from datetime import datetime, timedelta

def pp_firstday(year):
    print(type(year))
    firstday = datetime(1,12,22,0,0,0)
    yr = 2
    print(yr, " ", firstday.strftime("%b/%d/%Y  %a"))
    yr = 3
    while int(firstday.strftime("%Y")) != year-1:
        firstday += timedelta(weeks=52)
        if int(firstday.strftime("%m")) <= 12 and int(firstday.strftime("%d")) <= 12:
            firstday += timedelta(weeks=2)
            print("27: ",firstday.strftime("%b/%d/%Y  %a"))
        print(yr, " ",firstday.strftime("%b/%d/%Y  %a"))
        yr += 1
    return firstday

year = int(input("Year >>>")) result=pp_firstday(year) print(result.strftime("%b/%d/%Y  %a"))

问题是,运行此命令时,输出显示: 0001年12月2日,星期六 Python认为第一年12月22日是星期六。 到2019年时,输出显示: 2020 Dec / 21/2019星期六 从而解决了问题。 有什么作用?

1 个答案:

答案 0 :(得分:4)

按照calendar docs

  

大多数这些函数和类都依赖于datetime模块,   使用理想化的日历,当前公历   无限地在两个方向上延伸。   Dershowitz和Reingold的“阳历公历”   本书“日历计算”,它是所有日历的基础日历   计算。

12月22日1是Julian calendar中的星期四,当时使用该星期四。但是,这是proleptic Gregorian calendar

中的星期六