我们经常需要计算一个日期是星期几,比较好想的方法是知道一个日期是星期几(比如 1900 年 1 月 1 日是周一),然后一天一天地数……效率有点低,呵呵。改进一点可以一次数一个月或者数一年,不过貌似得用到什么偏移表什么的,不够麻烦的。
来,我们说说蔡勒公式。形式非常诡异和神奇:
[tex]$$dayOfWeek = \left(d + \left\lfloor\frac{26(m+1)}{10}\right\rfloor + y + \left\lfloor\frac{y}{4}\right\rfloor + 6 \left\lfloor\frac{y}{100}\right\rfloor + \left\lfloor\frac{y}{400}\right\rfloor\right) \mod 7$$[/tex]
这里我写的是一种比较适用于计算机计算的公式,其他的形式可以参看维基百科。
上式中,y 是年份,m 是月份,d 是日期,dayOfWeek 就是星期几了(以 0 为星期六,1 为星期日,依此类推)。特别注意,如果月份是一月或者二月,要把它们当作上一年的十三月、十四月。
当然,这个公式只适用于格里历,很久以前的事它就管不了了。
Tags:calendarRelated Posts

这公式不诡异啊,很好理解啊
嗯...不诡异...麻烦你给我证一下好吧?
年份除不开怎么办呢
@丘丘
我写高斯函数了啊
很简单的公式,小学时用过。。。