计算日期是星期几

蔡勒(Zeller)公式

蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。

公式

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
注意:

  1. 当年的1,2月要当成上一年的13,14月进行计算
  2. w小于0时,需要加7的倍数到正数后再取模

符号意义

w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;不过如果年份是公元前的年份且非整百数的话,c应该等于所在世纪的编号,如公元前253年,是公元前3世纪,c就等于-3)
y:年(一般情况下是后两位数,如果是公元前的年份且非整百数,y应该等于cMOD100+100)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。

代码实现

/**
  * 
  * @param {string} year YYYY
  * @param {string} month D
  */
function getWeek(year,month) {
        const C = year[0] + year[1] - 0
        const y = year[2] + year[3] - 0
        const m = month < 3 ? month + 12 : month
        const d = 1
        // 蔡勒公式
        const W = f(C / 4) - 2 * C + y + f(y / 4) + f(26 * (m + 1) / 10) + d - 1

        return W
}
function f(n) {
    return Math.floor(n)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容