ホームページ >Java >&#&チュートリアル >2 つの Java 8 LocalDateTime インスタンス間の時間差を正確に計算するにはどうすればよいですか?
Java 8: 2 つの LocalDateTime インスタンス間の時差の決定
Java 8 では、LocalDateTime クラスはタイムゾーンなしの日付と時刻を表します。 2 つの LocalDateTime インスタンス間の差を計算するには、Period クラスと Duration クラスを使用できます。ただし、コードは月の値の後に間違った結果を返します。
元の実装のコードが間違っています:
問題は getTime() メソッド内、特に時、分、秒の計算:
Duration duration = Duration.between(today, now); long seconds = duration.getSeconds(); long hours = seconds / SECONDS_PER_HOUR; long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE); long secs = (seconds % SECONDS_PER_MINUTE);
このアプローチは、継続時間が次のように仮定されているため、正しくありません。常にポジティブ。 fromDateTime が toDateTime より大きい場合に発生した負の値を処理できません。
ChronoUnit を使用した代替アプローチ:
負の場合も含め、LocalDateTime インスタンス間の差異を正確に計算するには値を指定するには、ChronoUnit を使用することをお勧めします。 enum:
long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime); long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);
ChronoUnit は、年、月、日、時間、分、秒など、さまざまな時間単位の差を計算するメソッドを提供します。正の値と負の値の両方を正しく処理します。
ChronoUnit を利用することで、コードはすべてのシナリオに対して正確な結果を提供します。
以上が2 つの Java 8 LocalDateTime インスタンス間の時間差を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。