算法如下:基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。以公元元年为参考,公元元年1月1日为星期一。
测试:
//year-年 month-月 day-天数
int year = 2018;
int month = 8;
int day = 31;
if(month == 1||month == 2) {
month += 12;
year--;
}
int w = (day+2*month+3*(month+1)/5+ year +year/4-year/100+year/400)%7;
System.out.println(w);