获得指定时间的下一天的N种方法

获得指定时间的下一天的N种方法有时候在进行日期计算的时候需要对日期进行加减 比如给定一个时间 T 我们需要查找 T 到 T 1 的数据 最简单的方法就是转换成毫秒后加上一天对应的毫秒数 再转换回来 但是这样显得不够优雅 那么 Java 中有哪些方法可以实现这个

大家好,欢迎来到IT知识分享网。

有时候在进行日期计算的时候需要对日期进行加减,比如给定一个时间T,我们需要查找T到T+1的数据,最简单的方法就是转换成毫秒后加上一天对应的毫秒数,再转换回来,但是这样显得不够优雅,那么Java中有哪些方法可以实现这个功能呢?下面进行了总结:

方法一:基本方法

Date now = new Date(); Date date = new Date(now.getTime() + (1000 * 60 * 60 * 24));

看似正确的方法,其实里面是有坑的。

仔细阅读java.util.Date的注释,可以发现,对于一天的定义,根据Java虚拟机运行的环境,是有区别的。

主要在于两点:

1. 闰秒(leap second):每一两年有额外的一秒钟,加在6月30日或12月31日的最后一秒。

关于闰秒的知识可以参考陈皓:关于闰秒(leap second)的小知识

我写程序试了下,没有这个效果,不知道是不是时区的问题。

2. 夏令时(Daylight Savings Time,DST):一般在天亮早的夏季人为将时间提前一小时,各国的规则不一样。

关于夏令时的知识可以参考百度百科,关于夏令时的实验,可以查看Java中夏令时带来的Date不一致问题

好在现在中国已经不使用夏令时了,在这之后的时间操作都没有问题,不过万一哪天又开始启用了夏令时,用这种方法的程序很可能遇到各种诡异的问题。

方法二:使用java.util.Calendar

Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.DATE, 1); Date date = calendar.getTime();

没什么问题,只不过要多写几行代码。

方法三:使用joda-time

LocalDateTime localDateTime = LocalDateTime.now(); localDateTime.plusDays(1);

非常的清晰优雅。

方法四:Java 8

Java 8也可以实现该功能,代码与joda-time一致,关于JDK 8中的LocalDateTime可以参见官方文档。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139019.html

(0)
上一篇 2025-06-08 22:45
下一篇 2025-05-27 09:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信