1. 程式人生 > >計算日期為周幾(蔡勒公式應用)

計算日期為周幾(蔡勒公式應用)

最近一個專案中需要用到日曆功能,計算出給定日期(某個月的第一天)是周幾,這裡用到了蔡勒公式,需要注意的問題:
問題一
某年的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代表周幾