年Ÿ是闰年,如果Ÿ是由4整除的完美,和
不是100,或
100和400
以下来源遵循以上规则:
Python(输出calendar.monthrange(1000,2)
为(5,28))
webconversiononline.com
但是,以下消息来源称1000 是闰年:
Linux cal(命令cal 2 1000
显示29天)
timeanddate.com
格里高利系统于1582年引入,其中上述规则显然开始适用(在1582年之前,唯一的要求是完全除以4).但是,测试其他几年的值(100,500,600,700,900,1100,1300,1400,1500和1700)表明只有在1800和之后,Python和Linux的结果才会同意.
为什么这些来源会给出不同的答案?
该calendar
模块使用了预感格里高利历.
从该calendar
文档:
这些功能和类中的大多数都依赖于
datetime
使用理想日历的模块,当前的公历在两个方向上都有扩展.这与Dershowitz和Reingold的书"Calendrical Calculations"中的"proleptic Gregorian"日历的定义相符,它是所有计算的基本日历.
来自维基百科:
通过将格里高利历延伸至1582年正式引入之前的日期,产生了公历格里高利历.
朱利安历法在一个日期没有被格里高利历取代.它在不同时期被各国采用.
从cal
我(相当古老)的机器上的Linux 手册页:
-s -file ... -country_code
假设在与country_code相关的日期从Julian切换到Gregorian Calendar如果没有指定,
ncal
尝试从当地环境猜测切换日期或者回到1752年9月2日.这是英国和她的殖民地切换到Gregorian的时候日历.[...]
BUGS
对于许多国家而言,将Julian-Gregorian转换日期分配给国家/地区代码在历史上是天真的.