年 Y 是闰年,如果 Y 完全可被4整除,
以下来源遵循上述规则:
calendar.monthrange(1000,2)
的输出是(5,28))但是,以下消息来源称1000 是闰年:
cal 2 1000
显示29天)格里高利系统在1582中引入,上面的规则显然开始适用(在1582年之前,唯一的要求是完全除以4)。但是,测试其他几年的值(100,500,600,700,900,1100,1300,1400,1500和1700)表明只有在1800之后,包括 Python 和的结果Linux cal 同意。
为什么这些来源会给出不同的答案?
答案 0 :(得分:7)
calendar
模块使用了公历格里高利历。
这些函数和类中的大多数都依赖于
datetime
模块 使用理想化的日历,当前的格里高利历延伸 两个方向。这符合“预感”的定义 格列高利历“Dershowitz和Reingold的书中的日历”Calendrical 计算“,它是所有计算的基本日历。
来自Wikipedia:
预感格里高利安 日历 通过将公历向后延伸到日期来生成 在1582年正式引入之前。
朱利安历法在一个日期没有被格里高利历取代。它在不同时期被各国采用。
来自我(相当古老)机器上的Linux cal
手册页:
-s -file ... -country_code
假设在日期从Julian切换到Gregorian Calendar 与country_code关联如果未指定,
ncal
会尝试猜测 从当地环境切换日期或回到9月 这是英国和她的殖民地转向世界的时候 阳历日历。[...]
<强> BUGS 强>
将Julian-Gregorian切换日期分配给国家/地区代码是 在许多国家,历史上都很天真。