曜日を計算する関数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); } } } } }