1

我需要计算两个开始日期之间的天数和月份。

例如,我有两个日期 1.1.2012 和 30.4.2012,现在我想知道包含在此范围内的天数和月数。

结果应该是 121 天零 4 个月。我得到的是 120 天零 3 个月。

从 joda time 开始的最佳方法是什么?

我的代码(两个日期都是 java.util.Date):

Months.monthsBetween(new DateMidnight(startDate), new DateMidnight(endDate)).getMonths();
4

1 回答 1

3
  DateTime dt1 = new DateTime(2012, 1, 1, 00, 00, 00, 00);
  DateTime dt2 = new DateTime(2012, 4, 30, 00, 00, 00, 00);
  System.out.println(Days.daysIn(new Interval(dt1, dt2)));     // 120D
  System.out.println(Months.monthsIn(new Interval(dt1, dt2))); // 3M  

dt1 和 dt2 在几个月内的差异是3 个整月- 这是真的。不应该有4个月

dt1 和 dt2 之间的天数差异为 (31 days + 29 days + 31 days + 29 days) = 120 days。第 30 天 - 30.04.2012 还没有结束,所以还不是一整天。

所以结果应该是 121 天零 4 个月- 错误的假设。
结果应该是120天3个月

于 2012-08-01T08:49:45.357 回答