0

joda time 1.2を使用して2つの日付の間に何日あるかを計算する方法を理解する必要があります(新しいバージョンは使用できません)。したがって、Days クラスはまだ存在しません。

私は何週間も何日もこれを行うことができます

(period.getWeeks()*7 + period.getDays());

しかし、月になると、すべての日数が異なるため、period.getMonths()*30 を実行できません。

編集:私もできます

(today.getDayOfYear() - oldDate.getDayOfYear());

しかし、日付が異なる年にある場合に問題があります

ありがとう

4

1 に答える 1

1

Joda Time のソース コードを見てください。DaysdaysBetweenメソッドは次のように定義されます。

public static Days daysBetween(ReadableInstant start, ReadableInstant end) {
    int amount = BaseSingleFieldPeriod.between(start, end, DurationFieldType.days());
    return Days.days(amount);
}

BaseSingleFieldPeriodDays と同様に、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;
}
于 2013-04-03T11:45:48.307 に答える