Java SE 计算日期

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

}

在这里插入图片描述

发布了61 篇原创文章 · 获赞 3 · 访问量 1228

猜你喜欢

转载自blog.csdn.net/qq_44847147/article/details/101111884