1

2つの日付の間の月数を見つけようとしています。助けていただければ幸いです。以下の例では、 Joda-Timeを使用しています。

DateMidnight start = new DateMidnight(new Date()); 
DateMidnight dtEndDate  = start.plusDays(11);   //adding Days

int months = Months.monthsBetween(start, dtEndDate).getMonths();

System.out.println("Months between " +
                    start.toString("yyyy-MM-dd") + " and " +
                    dtEndDate.toString("yyyy-MM-dd") + " = " +
                    months + " month(s)");

2013年2月18日から2013年3月1日までの「0」を返す上記のコード

同じ月の差を見つける必要があるため、月に+1を追加できません。また、2つの経過期間の差を見つける必要があります。つまり、「2012-Dec-04」と「2013-Jan-06」の間は-1を返す必要があります。 ;

scenario1:

date1:  2013-02-18
    date1.plusDays(11);
date2:  2013-03-01
Output : 0 month(s)   //but I need as 1 Month

scenario2:
date1:  2013-02-18
    date1.plusDays(1);
date2:  2013-02-19
Output : 0 month(s)   //returns correctly exactly what I need

scenario3:
date1:  2013-03-18
date2:  2013-02-19
Output should be : -1 month(s)
4

1 に答える 1

5

1比較する前に、両方の日付の日をに設定します。

startModified = start.withDayOfMonth(1); 
endModified = end.withDayOfMonth(1);
int months = Months.monthsBetween(startModified, endModified).getMonths();
于 2013-02-18T15:51:50.660 に答える