Java实现的计算任意时间是星期几
2017-04-25 16:43
337 查看
利用蔡勒公式,通过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;
}
目前公历日历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; }
相关文章推荐
- 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
- 计算Java中任意一个方法的执行时间的工具类
- 由过去的某一时间,计算距离当前的时间(Java实现)
- 计算输入时间的下一秒时间-java实现
- 由某日期计算星期几 java实现
- 【Java】Java根据时间计算是否为上午、中午、下午以及根据日期获得星期几
- Java将字符串转化为时间格式,与实现日期的计算
- 计算任意一个图生成树的个数——Kirchhoff 的Matrix Tree 方法Java实现
- 黑马程序员 Java中根据YYYY-MM-DD格式的日期计算为星期几的两种实现方式
- C#中实现根据年月日计算星期几的函数
- C#实现的根据年月日计算星期几的函数
- 时间和日历类的设计(Java的Date和Calendar的C++实现)
- 用java实现浮点数的精确计算
- C#实现的根据年月日计算星期几的函数 (转载)
- C#实现的根据年月日计算星期几的函数
- 用java实现浮点数的精确计算
- 用java实现浮点数的精确计算
- C#实现的根据年月日计算星期几的函数
- Java的时间处理(续<计算Java时间>)
- C#实现的根据年月日计算星期几的函数