经常需要通过日期来计算对应的星期,相关的方法主要有蔡勒公式和基姆拉尔森公式。

蔡勒公式

蔡勒(Zeller)公式

\[w = (y+\lfloor{y/4}\rfloor+\lfloor{c/4}\rfloor-2c+\lfloor{26(m+1)/10}\rfloor+d-1) \textit{ mod } 7\]

参数含义解释

蔡勒公式中个参数的含义如下:

  • $y$: 年份的后两位数;
  • $c$: 年份的前两位数;
  • $m$: 月份;注意:月份的值在3-14之间,1月和2月应当作为上一年的13、14月来考虑。
  • $d$: 日。

使用范围

蔡勒公式只适用于格里高利历(现在时间通用的公历),即1582年10月15日之后的情形。

代码实现(Python)

def getWeek(year, mouth, day):
    ''' Zeller Method.
    '''
    if mouth < 3:
        year, mouth = year-1, mouth+12
    y, c = int(str(year)[2:4]), int(str(year)[0:2])
    week = (y + y//4 + c//4 - 2*c + 26*(mouth+1)//10 + day - 1) % 7
    return week

基姆拉尔森公式

基姆拉尔森公式

\[w = (y/400-y/100+y/4+y+3*(m+1)/5+2*m+d+1) \textit{ mod } 7\]

参数含义解释

公式中个参数的含义如下:

  • $y$: 年份的后两位数;
  • $c$: 年份的前两位数;
  • $m$: 月份;注意:月份的值在3-14之间,1月和2月应当作为上一年的13、14月来考虑。
  • $d$: 日。