私は、タイムゾーンの違いに関して、2つのZonedDateTime sの時差を出力するメソッドを記述しようとしています。
いくつかの解決策を見つけましたが、それらはすべてLocalDateTimeで動作するように書かれています。
ChronoUnit のメソッドbetweenを使用できます。
このメソッドはそれらの時間を同じゾーン(最初の引数からのゾーン)に変換し、その後、Temporalインターフェイスで宣言されたuntilメソッドを呼び出します。
static long zonedDateTimeDifference(ZonedDateTime d1, ZonedDateTime d2, ChronoUnit unit){
return unit.between(d1, d2);
}
ZonedDateTimeとLocalDateTimeの両方がTemporalインターフェースを実装しているため、これらの日付型の普遍的なメソッドも記述できます。
static long dateTimeDifference(Temporal d1, Temporal d2, ChronoUnit unit){
return unit.between(d1, d2);
}
ただし、このメソッドをLocalDateTimeとZonedDateTimeを組み合わせて呼び出すと、DateTimeExceptionになることに注意してください。
それが役に立てば幸い。