web-dev-qa-db-ja.com

Java 8:2つのZonedDateTimeの差を計算する

私は、タイムゾーンの違いに関して、2つのZonedDateTime sの時差を出力するメソッドを記述しようとしています。

いくつかの解決策を見つけましたが、それらはすべてLocalDateTimeで動作するように書かれています。

51
Maggie Hill

ChronoUnit のメソッドbetweenを使用できます。

このメソッドはそれらの時間を同じゾーン(最初の引数からのゾーン)に変換し、その後、Temporalインターフェイスで宣言されたuntilメソッドを呼び出します。

static long zonedDateTimeDifference(ZonedDateTime d1, ZonedDateTime d2, ChronoUnit unit){
    return unit.between(d1, d2);
}

ZonedDateTimeLocalDateTimeの両方がTemporalインターフェースを実装しているため、これらの日付型の普遍的なメソッドも記述できます。

static long dateTimeDifference(Temporal d1, Temporal d2, ChronoUnit unit){
    return unit.between(d1, d2);
}

ただし、このメソッドをLocalDateTimeZonedDateTimeを組み合わせて呼び出すと、DateTimeExceptionになることに注意してください。

それが役に立てば幸い。

64