我需要计算两个开始日期之间的日期和月份。
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();
答案 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个月