7

我想用Java做简单的日期计算。例如,计算到日期之间的天数差异(时间分量为 0)。当然,您可以做一个简单的毫秒减法,除以每天的毫秒数,这很好 - 直到夏令时进入现场。我意识到对“天数差异”的不同解释是可能的,特别是是否应该考虑时间部分。为简单起见,让我们假设我们有一个 0 时间分量。

这种计算似乎是一种非常普遍的需求,我很高兴能就这个问题的不同方法进行讨论。

4

5 回答 5

11

我会看看Joda日期/时间库,特别是ReadableInterval类。

在 Java 中操作日期/时间时,Joda 让生活变得更加轻松,我相信这是新的 Java JSR 310 wrt 的基础。日期/时间。即它(或非常相似的东西)将出现在Java 的未来版本中。

于 2009-03-13T16:08:18.980 回答
3

看起来 Date、Calendar 和 DateUtils 可以满足您的所有需求。 http://commons.apache.org/lang/api/org/apache/commons/lang/time/DateUtils.html

DateUtils 允许截断或舍入时间,因此您可以只处理日期。您还提到了夏令时。主要问题是当有人说他们在 DST 更改的一天 01:30 做了某事时……是哪个 01:30?第一个还是第二个?幸运的是,这可以由 Calendar 类处理,因为它存储时区和 DST 偏移量。有关所有这些的详细信息,请查看: http ://www.xmission.com/~goodhill/dates/deltaDates.html

于 2009-03-14T18:37:52.210 回答
2

更简单的选择是使用 Joda 中的 Days、Weeks、Months 和 Years 类。

这样,您可以执行以下简单的操作:

int daysDifference = Days.daysBetween(startInstant, endInstant).getDays();
于 2011-04-19T05:39:01.240 回答
2
于 2017-04-28T08:27:41.477 回答
1

这是一篇讨论在 Java 中使用日期/日历工具来计算经过时间的文章。

于 2009-03-13T16:11:16.087 回答