Zeller 公式:计算任意一天是星期几

Zeller's Formula:

For the Gregorian calendar, Zeller's Formula is

\[\displaystyle W=\left(\left\lfloor \frac{C}{4} \right\rfloor -2C+Y+\left\lfloor \frac{Y}{4} \right\rfloor +\left\lfloor \frac{26(M+1)}{10} \right\rfloor +D-1\right)\bmod 7. \]


Where

\(W\): the day of week. (\(0 =\) Sunday, \(1 =\) Monday, ..., \(5 =\) Friday, \(6 =\) Saturday)

\(C\): the zero-based century. (\(=\lfloor \text{year}/100\rfloor= \text{century}-1\))

\(Y\): the year of the century. (\(=\begin{cases}\text{year}\bmod 100, & M=3,4,\ldots,12, \\ (\text{year}-1)\bmod 100, & M=13,14.\end{cases} ​\))

\(M\): the month. (\(3 =\) March, \(4 =\) April, \(5 =\) May, ..., \(14 =\) February)

\(D\): the day of the month.


NOTE: In this formula January and February are counted as months 13 and 14 of the previous year. E.g. if it is 2010/02/02, the formula counts the date as 2009/14/02.


For the day before 1582/10/15, notice that the time period from 1582/10/05 to 1582/10/14 does not exists. So for the day before 1582/10/15, the formula is

\[\displaystyle W=\left(\left\lfloor \frac{C}{4} \right\rfloor -2C+Y+\left\lfloor \frac{Y}{4} \right\rfloor +\left\lfloor \frac{26(M+1)}{10} \right\rfloor +D+3 \right)\bmod 7. \]


posted @ 2018-10-12 21:25  greyqz  阅读(596)  评论(0编辑  收藏  举报