与えられた日数で曜日を計算します.

2255 ワード

今日は簡単な方法を発見しました.
JavascriptのDateオブジェクトのgetDay()メソッドで曜日を取得することができます.0~6は日曜日~土曜日に対応します.
jsコードは以下の通りです
var d = new Date(year,month-1,day);//  :month-1
var week = '';
switch (d.getDay())
{
      case 0: week = '   '; break;
      case 1: week = '   '; break;
      case 2: week = '   '; break;
      case 3: week = '   '; break;
      case 4: week = '   '; break;
      case 5: week = '   '; break;
      case 6: week = '   '; break;
}
alert(week);
 
回転:http://www.cnblogs.com/chingho/archive/2010/03/26/1697282.html
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2 c+[26(m+1)/10]+d-1
数式の記号の意味は以下の通りです.c:世紀-1;y:年(二桁)m:月(mは3以上で、14以下で、つまり蔡勒の公式の中で、ある年の1、2月は前の年の13、14月と見なして計算します.例えば2003年1月1日は2002年の13月1日と見なして計算します.)d:日;[]は整数の部分だけを整理することを表します.(Cは世紀数マイナス一、yは年後二桁、Mは月、dは日数です.1月と2月は前の年の13月と14月で計算します.Cとyは前の年の値を取っています.)
計算したWは7で割って、残りは何曜日ですか?残りが0なら、日曜日です.
2049年10月1日(100周年国慶節)を例にとって、蔡勒(Zeller)式で計算すると、次の通りです.蔡勒(Zeller)式:w=y+[y/4]+[c/4]-2 c+[26(m+1)/10]+d-1=49+[49/4]+[20/4]-2×20+[26]× (10+1)/10]+1-1=49+[12.25]+5-40+[28.6]=49+12+5-40+28=54(7余り5を除く)2049年10月1日(100周年国慶節)は金曜日です.
あなたの誕生日(生年月日、今年、来年)は何曜日ですか?試してみてもいいです
 
Javascript関数は以下の通りです.
    /*
     *           ,1-6        ,0    
     * y   ,m   ,d  
     */
    function getWeek(y, m, d) {
        var _int = parseInt,
            c = _int(y / 100);
        y = y.toString().substring(2, 4);
        y = _int(y, 10);
        if (m === 1) {
            m = 13;
            y--;
        } else if (m === 2) {
            m = 14;
            y--;
        };

        var w = y + _int(y / 4) + _int(c / 4) - 2 * c + _int(26 * (m + 1) / 10) + d - 1;
        w = w % 7;

        w = w >= 0 ? w : w + 7;

        //       
        var week = '';
        switch (w)
        {
            case 0: week = '   '; break;
            case 1: week = '   '; break;
            case 2: week = '   '; break;
            case 3: week = '   '; break;
            case 4: week = '   '; break;
            case 5: week = '   '; break;
            case 6: week = '   '; break;
        }
        return week;
    }