計算日期為周幾(蔡勒公式應用)
阿新 • • 發佈:2018-11-12
最近一個專案中需要用到日曆功能,計算出給定日期(某個月的第一天
)是周幾,這裡用到了蔡勒公式,需要注意的問題:
問題一:
某年的1、2月計算時要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算
問題二:
注意使用蔡勒公式求和(未對7取餘數前
)時,求出的和可能為負數
,因為負數不能按習慣的餘數的概念求餘數,這裡我們加上7的倍數
直至為正數
後再對7取餘數
// js中計算出某個月的第一天是周幾 function(y, m, d){ // 求解cy年cm月cd日是星期幾,parseInt代表取整 var cc = parseInt(y / 100); var cy = y - cc * 100; var cm = m; var cd = 1; // 某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算 if(m == 1 || m == 2){ cc = parseInt((y-1) / 100); cy = y-1 - cc * 100; cm = 12 + m; } // 注意使用蔡勒公式時出現負數情況 while(csum < 0){ csum = csum + 7; } var fd = parseInt(csum % 7); return fd; }
程式碼中變數解釋:
y
代表年
m
代表月
d
代表日
cc
代表世紀-1
cy
代表年(後兩位數)
cm
代表月(範圍在3-14之間,包括3和14)
cd
代表日
fd
代表周幾