Joda Time のソース コードを見てください。DaysのdaysBetween
メソッドは次のように定義されます。
public static Days daysBetween(ReadableInstant start, ReadableInstant end) {
int amount = BaseSingleFieldPeriod.between(start, end, DurationFieldType.days());
return Days.days(amount);
}
BaseSingleFieldPeriod
Days と同様に、Joda Time 1.2 では利用できませんが、1.2 で利用可能なソースクラスを見ると、次のように表示され始めます。
protected static int between(ReadableInstant start, ReadableInstant end, DurationFieldType field) {
if (start == null || end == null) {
throw new IllegalArgumentException("ReadableInstant objects must not be null");
}
Chronology chrono = DateTimeUtils.getInstantChronology(start);
int amount = field.getField(chrono).getDifference(end.getMillis(), start.getMillis());
return amount;
}
これらのクラスとメソッドはすべて Joda Time 1.2 で利用できるため、2 つのインスタンス間の日数の計算は次のようになります。
public static int daysBetween(ReadableInstant oldDate, ReadableInstant today) {
Chronology chrono = DateTimeUtils.getInstantChronology(oldDate);
int amount = DurationFieldType.days().getField(chrono).getDifference(today.getMillis(), oldDate.getMillis());
return amount;
}