判断指定日期的经过天数
思路1:通过Calendar变量的add方法逐次+1。变量sum记录+1次数。
package 实例001;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Calendar beginDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
beginDate.set(2000, 1, 1);
endDate.set(2016, 1, 1);
CalcDays(beginDate, endDate);
}
private static void CalcDays(Calendar beginDate,Calendar endDate) {
int sum = 0;
while(!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR) && beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH) && beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {
beginDate.add(beginDate.DATE, 1);
sum++;
}
System.out.println("一共经过了:" + sum + "天");
}
private static boolean isLeapYear() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要检查是否为闰年的年份:");
int year = 0;
try {
year = sc.nextInt();
if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
// 闰年
System.out.println(year + "年是闰年。");
return true;
} else {
System.out.println(year + "年不是闰年。");
}
} catch (Exception e) {
System.out.println("输入年份异常!");
}
return false;
}
}
思路2:通过计算年,月,日的差值计算经过天数
package 实例001;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Calendar beginDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
beginDate.set(2000, 1, 1);
endDate.set(2000, 3, 5);
//CalcDays(beginDate, endDate); //方法1
CalcDaysMode2(beginDate, endDate); //方法2
}
private static void CalcDays(Calendar beginDate, Calendar endDate) {
int sum = 0;
while (!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR)
&& beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH)
&& beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {
beginDate.add(beginDate.DATE, 1);
sum++;
}
System.out.println("一共经过了:" + sum + "天");
}
private static void CalcDaysMode2(Calendar beginDate, Calendar endDate) {
int sum = 0;
// 天数 不为1置为1
if (beginDate.get(beginDate.DAY_OF_MONTH) != 1) {
System.out.println(beginDate.get(beginDate.DAY_OF_MONTH));
sum -= (beginDate.get(beginDate.DAY_OF_MONTH) - 1);
beginDate.set(beginDate.DAY_OF_MONTH, 1);
System.out.println(beginDate.get(beginDate.DAY_OF_MONTH));
}
if (endDate.get(endDate.DAY_OF_MONTH) != 1) {
System.out.println(endDate.get(endDate.DAY_OF_MONTH));
sum += endDate.get(endDate.DAY_OF_MONTH) - 1;
endDate.set(endDate.DAY_OF_MONTH, 1);
System.out.println(endDate.get(endDate.DAY_OF_MONTH));
}
// 月份天数
while (!(beginDate.get(beginDate.YEAR) == endDate.get(endDate.YEAR)
&& beginDate.get(beginDate.MONTH) == endDate.get(endDate.MONTH)
&& beginDate.get(beginDate.DAY_OF_MONTH) == endDate.get(endDate.DAY_OF_MONTH))) {
switch (beginDate.get(Calendar.MONTH)) {// sum+=表示至下月1号经过的天数
case 0:
sum += 31;
break;
case 1:
if (isLeapYear(beginDate.get(beginDate.YEAR))) {
System.out.println("闰年");
sum += 29;
} else {
System.out.println("平年");
sum += 28;
}
break;
case 2:
sum += 31;
break;
case 3:
sum += 30;
break;
case 4:
sum += 31;
break;
case 5:
sum += 30;
break;
case 6:
sum += 31;
break;
case 7:
sum += 31;
break;
case 8:
sum += 30;
break;
case 9:
sum += 31;
break;
case 10:
sum += 30;
break;
case 11:
sum += 31;
break;
default:
break;
}
beginDate.add(beginDate.MONTH, 1);
System.out.println();
System.out.println("一共经过了:" + sum + "天");
}
System.out.println("一共经过了:" + sum + "天");
}
private static boolean isLeapYear(int year) {
if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
// 闰年
System.out.println(year + "年是闰年。");
return true;
} else {
System.out.println(year + "年不是闰年。");
}
return false;
}
private static boolean isLeapYear() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要检查是否为闰年的年份:");
int year = 0;
try {
year = sc.nextInt();
if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
// 闰年
System.out.println(year + "年是闰年。");
return true;
} else {
System.out.println(year + "年不是闰年。");
}
} catch (Exception e) {
System.out.println("输入年份异常!");
}
return false;
}
}