ホームページ >Java >&#&チュートリアル >2 つの Java 8 LocalDateTime インスタンス間の時間差を正確に計算するにはどうすればよいですか?

2 つの Java 8 LocalDateTime インスタンス間の時間差を正確に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 05:28:14517ブラウズ

How to Accurately Calculate Time Differences Between Two Java 8 LocalDateTime Instances?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。