两个日期之间的天/月(仅年/月)

时间:2012-07-31 14:50:01

标签: java datetime jodatime

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

E.g。我有两个日期1.1.2012和2012年4月30日,现在我想知道这个范围内包含的天数和月数。

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

从这里开始joda时间的最佳方法是什么?

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

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

1 个答案:

答案 0 :(得分: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天+29天+31天+29天)= 120天。第30天 - 2012年4月30日尚未结束,所以现在还不是一整天。

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