ある日が何曜日であるかを計算する方法


チェラー(Zeller)式とキムラルソン計算式を試してみると、まだ改良版のキムラルソン計算式が力を与えていることが分かった.
 

キムラルソン計算式アルゴリズム


アルゴリズムは次のとおりです.
キムラルソンの計算式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
式ではdは日付の日数、mは月数、yは年数を表す.
注意:式には、他の式とは異なる点があります.
1月と2月を前年の13月と14月と見なし、例えば2004-1-10であれば2003-13-10に換算して公式計算に代入する.
 
改良版コード:
private function getDayOfWeek(year:int,month:int,day:int):int { var y:int = year; var m:int = month; if(month == 1 || month == 2) { y = year - 1; m = month + 12; } var w:int = (day + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1; var week:int = w; return week; }