public class Date {
public int year;
public int month;
public int day;
public int[] day_of_month ={
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
//构造方法
//年支持的范围[1840,2020]
//月支持的范围[1,12]
//日支持的范围
public Date(int year,int month,int day){
//用户传入参数的合法性校验
if(year<1840||year>2020){
System.err.println("年支持的范围是[1840,2020]");
return;
}
if(month<1||month>12){
System.err.println("不是地球人的月份");
return;
}
if(day<1||day>calcDaysOfMonth(year,month)){ //calc计算一下当前月的天数,既传入年又传入月,有闰年
System.err.println("天数不对");
return;
}
this.year=year;
this.month=month;
this.day=day; //初始化
}
public int calcDaysOfMonth(int year,int month){ //计算当前月的天数的函数
if(month!=2){
return day_of_month[month-1];
}
if(isLeapYear(year)) {
return 29;
}else{
return 28;
}
}
public boolean isLeapYear(int year){ //判断是否是闰年
if(year%4==0&&year%100!=0) { //能被4整除,但不能被100整除的,和能被400整除的数
return true;
}
if(year%400==0){
return true;
}
return false;
}
public Date after(int days){
day+=days;
while(day>calcDaysOfMonth(year,month)){
day-=calcDaysOfMonth(year,month);
month+=1;
if(month>12){
month=1;
year+=1;
}
}
return this;
}
public String toString(){ //按照这种格式输出
return String.format("%04d-%02d-%02d",year,month,day);
}
public static void main(String[] args){
Date d=new Date(2019,7,20);
Date r=d.after(69);
System.out.println(r.toString());
}
}
Java SE 计算日期
猜你喜欢
转载自blog.csdn.net/qq_44847147/article/details/101111884
今日推荐
周排行