用java输出,从某年某月的某一天到另一个某年某月的某一天的,中间的所有日子,和判断是周几。
看代码吧
public class Test2 {
/**
* 从year1年month2月到year2年到month2月的
*
* @param args
*/
int days = 0;
public static void main(String[] args) {
int year1= 2013;
int year2 = 2014;
int month1 = 2;
int month2 = 1;
int day1 = 3;
int day2 = 24;
Test2 t = new Test2();
t.printDay(year1, month1,day1, year2, month2,day2);
}
public void printDay(int year1, int month1,int day1, int year2, int month2,int day2) {
int sum = 0;
int sum1 = 0;
int sum2 = 0;
int year=year1;
for (; year <= year2;year++ ) {
int m = month1;
int m2 = 12;
// 第二年要从1月开始循环
if (year >year1) {
m=1;
// m2 = month2;
}
//循环的年份和终止的年份相同时,到终止年份的月份终止循环
if(year == year2){
m2 = month2;
}
for (; m <= m2; m++) {
// 求这个月的第一天是这一年的第几天;
sum1=month(year,m);
// 求从1900.01.01开始过到咯第几天;
for (int j = 1900; j < year; j++) {
if (j % 4 == 0 && j % 100 != 0 || j % 400 == 0) {
sum2 += 366;
} else {
sum2 += 365;
}
}
sum = sum1 + sum2;
System.out.println("——————————————" + year + " " + m+ "—————————————————————————");
int a=1;
if (year == year2&&m==month2) {
//m=1;
// m2 = month2;
days=day2;
}
if(year==year1&&m==month1){
a=day1;
}
for (; a <= days; a++) {
//b代表星期几,0是星期日
int b = (sum + a) % 7;
System.out.print(a+" "+ b+ "\t");
if ((sum + a) % 7 == 6) {
System.out.println();
}
}
sum1 = 0;
sum2 = 0;
sum = 0;
System.out.println("\n");
}
}
}
public int month(int year, int month) {
int summ = 0;
for (int i = 1; i <= month; i++) {
// 判断每月的天数;
switch (i) {
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
break;
}
if (i < month) {
summ += days;
}
}
System.out.println(summ);
return summ;
}
}
发表回复