编写定义日期类及使用日期类对象,要求:定义构造方法,实现初始化,定义显示日期的成员方法,定义计算两个日期之间的相距天数的成员方法

代码:

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");
	}
	}
}

测试如图:

编写定义日期类及使用日期类对象,要求:定义构造方法,实现初始化,定义显示日期的成员方法,定义计算两个日期之间的相距天数的成员方法