处理日期差有一个很直接的思路,那就是令小日期不断+1,直到等于大日期。
函数:判断闰年。用二维数组区分闰年月份与平年月份的不同。
记着这个思路,自己想的很容易乱。
package test1;
import java.util.Scanner;
/**
* 计算日期差YYYYMMDD
* @author ellie
*
*/
public class Test1 {
static int month[][]= {{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31}
,{30,30},{31,31},{30,30},{31,31}};//正常月份
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int date1=sc.nextInt();
int date2=sc.nextInt();
sc.close();
if(date1>date2) {
int temp=date1;
date1=date2;
date2=temp;
}
int ans=1;
int year1=date1/10000;
int month1=date1/100%100;
int day1=date1%100;
int year2=date2/10000;
int month2=date2/100%100;
int day2=date2%100;
while(year1<year2||month1<month2||day1<day2) {
day1++;
//判断是否到达每月最后一天
if(day1==month[month1-1][isLeapYear(year1)]+1){
month1++;
day1=1;
}
//判断是否到达13月
if(month1==13) {
year1++;
month1=1;
}
ans++;
}
System.out.println(ans);
}
private static int isLeapYear(int y) {
if((y%4==0&&y%100!=0)||(y%400==0)){
return 1;
}
return 0;
}
}