2012-07-31 220 views
1

我需要计算两个开始日期之间的日期和月份。从日期到日期(仅年/月)

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

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

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

我的代码(首尾两天java.util.Date):在几个月

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

回答

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 

DIFF DT1和DT2之间是3月全月 - 这是真的。不应该有4个月

dt1和dt2之间的差异为天(31天+29天+31天+29天)= 120天。第30天 - 2012年4月30日尚未完成,所以不是全天。

因此结果应该是121天4个月 - 错误的假设。
结果应为120天和3个月

+0

我不明白,如果我有个从一月至四月的4一月,二月,三月和四月。也许我的方法是错误的,或者我正在使用错误的方法 – Gambo 2012-08-01 14:49:41

+0

4月30日还没有完成。四月在'五一'完成 – Ilya 2012-08-01 16:52:20