package naizi; import java.util.Scanner; public class Date { //定义私有成员变量 private int yy,mm,dd; //定义构造方法 public Date(int yy,int mm,int dd){ this.yy=yy; this.mm=mm; this.dd=dd; } //生成get和set方法 public int getYy() { return yy; } public void setYy(int yy) { this.yy = yy; } public int getMm() { return mm; } public void setMm(int mm) { this.mm = mm; } public int getDd() { return dd; } public void setDd(int dd) { this.dd = dd; } //计算两个日期之间的相距天数的成员方法 int DiffDays(Date d){ int [] DAY1={31,28,31,30,31,30,31,31,30,31,30,31}; int [] DAY2={31,29,31,30,31,30,31,31,30,31,30,31}; int day=0,day1=0,day2=0,i; if(yy==d.getYy()&&mm==d.getMm()){ //判断是否在同一年,同一月 return d.getDd()-dd; }else if(yy==d.getYy()){ //判断在同一年不同月份 if(yy%400==0||(yy%100!=0&&yy%4==0)){ //能被400整除或者不能被100整除但能被4整除为闰年 for(i=0;i<mm-1;i++){ day1+=DAY2[i]; } day1+=dd; for(i=0;i<d.getMm()-1;i++){ day2+=DAY2[i]; } day2+=d.getDd(); return day2-day1; }else{ for(i=0;i<mm-1;i++){ day1+=DAY1[i]; } day1+=dd; for(i=0;i<d.getMm()-1;i++){ day2+=DAY1[i]; } day2+=d.getDd(); return day2-day1; } }else{ //否则不在同一年同一月 if(d.getYy()%400==0||(d.getYy()%100!=0&&d.getYy()%4==0)){ for(i=0;i<d.getMm()-1;i++){ day2+=DAY2[i]; } day2+=d.getDd(); }else{ for(i=0;i<d.getMm()-1;i++){ day2+=DAY1[i]; } day2+=d.getDd(); } if(yy%400==0||(yy%100!=0&&yy%4==0)){ for(i=0;i<mm-1;i++){ day1+=DAY2[i]; } day1+=dd; }else{ for(i=0;i<mm-1;i++){ day1+=DAY1[i]; } day1+=dd; } for(i=yy;i<d.getYy();i++){ if(i%400==0||(i%100!=0&&i%4==0)){ day+=366; }else{ day+=365; } } return day2+day-day1; } } public static void main(String[] args) { int a,b,c; Date d1,d2; try{ Scanner sc = new Scanner(System.in); String str1 = sc.next(); a=Integer.parseInt(str1); str1 = sc.next(); b=Integer.parseInt(str1); str1 = sc.next(); c=Integer.parseInt(str1); d1=new Date(a,b,c); String str2 = sc.next(); a=Integer.parseInt(str2); str2 = sc.next(); b=Integer.parseInt(str2); str2 = sc.next(); c=Integer.parseInt(str2); d2=new Date(a,b,c); System.out.println("Daynum:"+d1.DiffDays(d2)); }catch(Exception e){ System.out.println("error"); } } }
测试如图: