1900年居然不是闰年?
Posted | stdout
看HN讨论 昨天2024-02-29有哪些闰年的bug,有一个吃惊了
>>> datetime.datetime.strptime('Feb 29', '%b %d')
ValueError: day is out of range for month
python的 datetime()
默认 year=1900
。但是心里想 1900 不应该也是闰年吗?
查了下还真不是。囧。一年有 365.242374 天:
- 近似看成 365.25 天就是4年一润;
- 剩余的精度 365.25-365.242374 == 0.0076 天
- 而且,0.0076 ✖️ 400 == 3.0504,也就是每400年要少润3天
- 结论就是每100年不润,但是每400年又要润
- 比如 1700, 1800, 1900, 2100, 2200, 2300, 2500, 2600 这些年都不是闰年。2000、2400是闰年。
真复杂!
Comments