計算日期是星期幾

蔡勒(Zeller)公式

蔡勒(Zeller)公式,是一個計算星期的公式,隨便給一個日期,就能用這個公式推算出是星期幾。

公式

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

  1. 當(dāng)年的1,2月要當(dāng)成上一年的13,14月進(jìn)行計算
  2. w小于0時,需要加7的倍數(shù)到正數(shù)后再取模

符號意義

w:星期; w對7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世紀(jì)(注:一般情況下,在公式中取值為已經(jīng)過的世紀(jì)數(shù),也就是年份除以一百的結(jié)果,而非正在進(jìn)行的世紀(jì),也就是現(xiàn)在常用的年份除以一百加一;不過如果年份是公元前的年份且非整百數(shù)的話,c應(yīng)該等于所在世紀(jì)的編號,如公元前253年,是公元前3世紀(jì),c就等于-3)
y:年(一般情況下是后兩位數(shù),如果是公元前的年份且非整百數(shù),y應(yīng)該等于cMOD100+100)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算)
d:日
[ ]代表取整,即只要整數(shù)部分。

代碼實(shí)現(xiàn)

/**
  * 
  * @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)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容