在 Java 中计算日期差异

2022-09-03 01:46:03

我觉得有趣的是,Java(或java.util库)没有内置的函数来计算日期的差异。我想从一个日期中减去另一个日期,以获得它们之间的经过时间。最好的方法是什么?

我知道简单的方法是以毫秒为单位获取时间的差异,然后将其转换为天。但是,我想知道这是否适用于所有情况(夏令时等)。


答案 1

Java并没有遗漏太多,如果你看看开源:试试Joda-Time


答案 2

我知道简单的方法是以毫秒为单位获取时间的差异,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(夏令时等)。

如果您的时间是从 UTC 日期派生的,或者它们只是在同一系统上测量的对 System.getCurrentTimeMillis() 的两次调用之间的差异,则您将获得有效的毫秒数作为差异,而与任何时区问题无关。(这就是为什么一切都应该使用UTC作为存储格式 - 从UTC->本地时间要容易得多;如果你试图走另一条路,那么你需要将本地时区与本地时间一起存储 - 或者尝试推断它,gack!)

至于把它变成几天,你应该能够除以86400000...需要注意的是,每隔一年左右就会偶尔出现一个闰秒