以1980年1月1日(星期二)为起始日,如果计算至该日期的天数,就可以知道该日期是星期几。求总天数的计算公式如下:
总天数=平年的天数累计量+闰年的天数累积量+当年的前几个月的累积天数+本月天数
求total(总天数的值):
total=year-1980+(year-1980+3)/4+当年的前几个月的累积天数+本月天数;
不需要具体的计算天数,因为平年是365天,闰年是366天,365%7=1,所以平年的总天数每年只需要累积1,闰年累积2即可.
package mypackage;
public class Hello {
public static void main(String[] args) {
int year=2019,month=9,day=15;
boolean leap=year%400==0||year%100!=0&&year%4==0; //判断当年是否为闰年
int total=year-1980+(year-1980+3)/4;//前几年的天数累积量
for(int i=month-1;i>0;i--){
switch(i){
case 1:case 3:case 5:case 7:case 8:case 10:total+=31;break;
case 4:case 6:case 9:case 11:total+=30;break;
case 2:total+=leap?29:28;
}
}
total+=day;
int week=1;
week=(week+total)%7;
System.out.print(year+"年"+month+"月"+day+"日 星期");
switch(week){
case 0:System.out.println("日");break;
case 1:System.out.println("一");break;
case 2:System.out.println("二");break;
case 3:System.out.println("三");break;
case 4:System.out.println("四");break;
case 5:System.out.println("五");break;
case 6:System.out.println("六");break;
}
}
}
【运行结果】
2019年9月15日 星期日