计算Java中日期的差异

Ani*_*udh 17 java datetime date date-arithmetic

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

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

duf*_*ymo 8

如果你看一下开源的话,Java不会错过太多:尝试Joda-Time.

  • 关于Java日期的问题==>回答提到Joda! (3认同)

Jas*_*n S 6

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

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

至于将其变为若干天,您应该能够除以86400000 ...但需要注意的是每隔一年左右偶尔会出现闰秒.