以前听人说在Linux上可以查到一个很奇怪的月份,只是当时忘了那个特殊的月份。今天在网上搜了一下,发现通过这个命令(月份)了解了一段人类文明历史。呵呵。虽然和Linux没什么关系,但是确实是因为Linux才让我了解到的。
# cal 9 1752
September 1752
S M Tu W Th F S
1 2 14 15 16
1 7 18 19 20 21 22 23
2 4 25 26 27 28 29 30
我们发现1752年9月2日的后面竟然是14日,确实很奇怪,通过在网上搜索,找到了答案:
1582年2月,罗马教廷要求从1582 年10月中减去10天,因此1852 年10月4日后面紧跟着就是15日。
在意大利、西班牙等国家都这样处理了。其他天主教国家也很快跟着这么做了,但是新教国家不愿意修改,
而且希腊等东正教国家直到20世纪初才修改,所以这个改革在英国及其殖民地(包括美国)在1752年9月才被执行。这样 1752
年9月2日后面跟着的就是1752 年9月14日。 这就是为什么cal会生成上面输出的原因了。
P.S.:Windows用户是没福气查到这个特殊月份了,因为Windows的纪年范围只是1980-2099。呵呵
以上文章摘自ChinaUnix的BBS。
但如果看仔细的朋友会发现:1582年,罗马教廷减去的是10天,而到1752年修改历法的时候却减去了11天,当初我在论坛上发现不少人发现这个问题,但始终没答案。
其实很简单,不少学计算机编程的人通常都会做个万年历的习题,当然要考虑到闰年的问题,闰年的计算方法:公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2000年是闰年,而1900年不是。
写到这里有人会用cal命令查看一下,结果却出人意料!
1600年和1700年的2月都是29天!
原来在1800年之前的闰年计算方法中没有把被100整除而不能被400整除的年份算为平年,更没有考虑到被100整除也可被400整除的算为闰年。
所以罗马教廷把1700年的2月算成29天,而1600年的2月却是阴差阳错地恰好与现行的历法相符。结果1582年到1752年之间,当时历法算法和现行历法算法实际只相差了1天!
阅读(2059) | 评论(3) | 转发(0) |