¶题意
给定年月日,求这是一周中的星期几,以及这是一年中的第几天。
¶做法
关键就是闰年这个特殊情况,闰年的一天有366天(2月会有29天)。
- 普通闰年:4的倍数,且不是100的倍数
- 世纪闰年:400的倍数
蔡勒公式,知道即可,不用记忆。
公元1年1月1日被定义为星期一,所以只需要算距离该日的天数即可知道是星期几。
不过事实上那天采用的是儒略历,而不是现在的格里历(公历),在格里历中1582年10月5日到1582年10月14日这10天是消失的(为了调整之前4年1润的误差),此外儒略历与格里历在闰年上的差异(多了12天),综合这些差异,儒略历会比格里历在当时多2天,因此1年1月1日在儒略历上是星期六。
¶补充知识
实际公转时间其实是365.25日,所以需要通过闰年来补足缺少的天数。
四年一闰,百年不闰,四百年再闰。(每四年少一天,所以要补足;补完后,每一百年又多一天,所以不补)
最初计算机系统只有32位,只能存储68年,UNIX选择了1970.01.01作为纪元时间。又由于UNIX的统治地位,该选择成为了POSIX标准。