Java实现的计算任意时间是星期几

来源:互联网 发布:淘宝虚假交易不扣分 编辑:程序博客网 时间:2024/06/17 15:11

利用蔡勒公式,通过Java代码实现,具体请看源码:

目前公历日历400年一轮回,所以1600年和2000年的日期星期完全一致。

/** * 计算任意时间是星期几 * 利用蔡勒公式 * 公式:(年份代码+月份代码+日期)mod 7 * @param year * @param month * @param day * @return */public static int getWeek(int year,int month,int day){while(year < 1700 || year > 2099){if(year < 1700){year += 400;}else if(year > 2099){year -= 400;}}int x = year % 1000% 100;int srcYear = (x / 4 + x) % 7;if(year >= 1700 && year <= 1799){srcYear += 5;}else if(year >= 1800 && year <= 1899){srcYear += 3;}else if(year >= 1900 && year <= 1999){srcYear += 1;}int srcMonth = 0;switch(month){case 5:srcMonth = 0;break;case 8:srcMonth = 1;break;case 2:case 3:case 11:srcMonth = 2;break;case 6:srcMonth = 3;break;case 9:case 12:srcMonth = 4;break;case 4:case 7:srcMonth = 5;break;case 1:case 10:srcMonth = 6;break;}
//如果是闰年,改变月份代码的值if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){switch(month){case 1:srcMonth = 5;break;case 2:srcMonth = 1;break;}}int week = (srcYear + srcMonth + day) % 7;return week;}


0 0
原创粉丝点击