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

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java获得任意一个时间的下一天的时间 - joshua317的博客

一、问题

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

二、分析

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

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java获得任意一个时间的下一天的时间 - joshua317的博客

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值