1

2つの開始日の間の日と月を計算する必要があります。

たとえば、2012年1月1日と2012年3月4日の2つの日付があり、この範囲に含まれる日数と月数を知りたいと思います。

結果は121日4ヶ月になるはずです。代わりに私が得るのは120日と3ヶ月です。

ここでジョダタイムから始めるための最良のアプローチは何ですか?

私のコード(両方の日付はjava.util.Dateです):

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

1 に答える 1

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ヶ月になるはずです

于 2012-08-01T08:49:45.357 に答える