我写了下面的代码,给我年底的某天,该年的支付期开始了。由于某种原因,它告诉我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星期六 从而解决了问题。 有什么作用?
答案 0 :(得分:4)
大多数这些函数和类都依赖于datetime模块, 使用理想化的日历,当前公历 无限地在两个方向上延伸。 Dershowitz和Reingold的“阳历公历” 本书“日历计算”,它是所有日历的基础日历 计算。
12月22日1是Julian calendar中的星期四,当时使用该星期四。但是,这是proleptic Gregorian calendar
中的星期六