Java获得任意一个时间的下一天的时间

一、问题

获得任意一个时间的下一天的时间

二、分析

Java提供了java.util.Date类来处理日期格式的数据,通过它可以得到其所代表的日期的年月日和时分秒信息。因此,可以很自然地想到,要得到任何一个时间的下一天的时间,为Date的Day数据加上1天即可。但是,如果是月底怎么办?如果是年底怎么办?如果还是闰年怎么办?如果要在加上1天之前,进行这些判断的话,这样的程序就会变得相当的复杂。

其实,java.util.Date类的底层的实现是通过一个long型的整型数据来保存日期的,这个值记录的是任何一个时间距1970年1月1日,0日0分0秒的毫秒数。

这里可以验证一下,通过执行下面一段代码可以得到一个整型数字51。

package com.joshua317;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前时间:" + simpleDateFormat.format(date));

        //当前的毫秒数
        long time=System.currentTimeMillis();
        //得到距今多少年
        System.out.println("距今:" + time/1000/60/60/24/365 + "年");
    }
}

 

 

 

因此,完全可以不用管给定的时间是否是月底、年底或闰月的月底等条件,直接为它的毫秒数加上24小时所代表的毫秒数即可,然后再用新的long型的毫秒数构造一个新的Date类型的对象,该Date对象就是给定时间的下一天时间。

三、编程

package com.joshua317;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前时间:" + simpleDateFormat.format(date));

        Date nextDate = getNextDay(date);

        System.out.println("下一天时间:" + simpleDateFormat.format(nextDate));
    }

    public static Date getNextDay(Date date)
    {
        //1天24小时,1小时60分钟,1分钟60秒,1秒1000毫秒
        long addTime = 1 * 24 * 60 * 60 * 1000;
        Date nextDate = new  Date(date.getTime() + addTime);
        return nextDate;
    }
}

 

 

 

 

posted @ 2021-10-25 20:13  joshua317  阅读(537)  评论(0编辑  收藏  举报