LocalDateTime オブジェクト間の時差の計算
問題に対処するには、2 つの LocalDateTime オブジェクト間の時差を計算するには、正確に計算できる包括的なアプローチが必要です。複数の単位で期間を表します。
Java 8 API は、Period クラスと Duration クラスを提供します。これを効果的に処理します。 Period は年、月、日の時間間隔を表し、Duration は時間、分、秒を扱います。
既存のコードは、Period と Duration を利用して時差を決定しますが、若干の変更があります。必須。更新されたコードは次のとおりです。
import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId; public class Main { static final int MINUTES_PER_HOUR = 60; static final int SECONDS_PER_MINUTE = 60; static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR; public static void main(String[] args) { LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45); LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55); Period period = Period.between(fromDateTime, toDateTime); long seconds = Duration.between(fromDateTime, toDateTime).getSeconds(); long hours = seconds / SECONDS_PER_HOUR; long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE); long secs = (seconds % SECONDS_PER_MINUTE); System.out.println(period.getYears() + " years " + period.getMonths() + " months " + period.getDays() + " days " + hours + " hours " + minutes + " minutes " + secs + " seconds."); } }
ここでの主な変更点は、Duration.between(fromDateTime, toDateTime).getSeconds(); を使用することです。秒の差を計算します。これにより、午前 0 時をまたぐ時間帯や負の値を持つ時間帯を扱う際の精度が保証されます。
負の数が含まれる場合、Duration はそれらを正しく処理し、時差を負の値として提供します。さらに、特定の単位変換に ChronoUnit を使用することは信頼できるアプローチです。
以上がJava で 2 つの LocalDateTime オブジェクト間の時間差を正確に計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。