曜日を計算する関数2

曜日を計算する関数 - しがないプログラマ の日記 の修正版です。
ツェラーの公式 - Wikipedia via http://ja.doukaku.org/comment/5058/
より、既に公式が存在していました。そんな訳でWikipediaのソースを元にJavaに移植しました。返す値は前回と同じにするため、Wikipediaのものに +1しています。

以下ソース。

public class CalcWeekDay {
	public static int getWeekDay(int year, int month, int day) {
		int y = year;
		int m = month;
		if (m == 1 || m == 2) {
			y--;
			m += 12;
		}
		return (5 * y / 4 - y / 100 + y / 400 + (26 * m + 16) / 10 + day) % 7 + 1;
	}

	public static void main(String[] args) {
		for (int year = 2007; year <= 2008; year++) {
			for (int month = 1; month <= 12; month++) {
				for (int day = 1; day <= 20; day++) {
					final int weekDay = getWeekDay(year, month, day);
					System.out.println(year + "/" + month + "/" + day + ": week=" + weekDay);
				}
			}
		}
	}
}