2012-07-31 262 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