Rumah >Java >javaTutorial >Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Kejadian Java 8 LocalDateTime?

Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Kejadian Java 8 LocalDateTime?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 05:28:14518semak imbas

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

Java 8: Menentukan Perbezaan Masa Antara Dua Kejadian LocalDateTime

Dalam Java 8, kelas LocalDateTime mewakili tarikh dan masa tanpa zon waktu . Untuk mengira perbezaan antara dua kejadian LocalDateTime, anda boleh menggunakan kelas Tempoh dan Tempoh. Walau bagaimanapun, kod anda menghasilkan keputusan yang salah selepas nilai bulan.

Kod Salah dalam Pelaksanaan Asal Anda:

Isunya terletak dalam kaedah getTime(), khususnya dalam pengiraan jam, minit dan saat:

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);

Pendekatan ini tidak betul kerana ia menganggap bahawa tempohnya sentiasa positif. Ia gagal mengendalikan nilai negatif yang ditemui apabila fromDateTime lebih besar daripada toDateTime.

Pendekatan Alternatif Menggunakan ChronoUnit:

Untuk mengira dengan tepat perbezaan antara kejadian LocalDateTime, termasuk kes dengan negatif nilai, lebih baik menggunakan ChronoUnit enum:

long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);

ChronoUnit menyediakan kaedah untuk mengira perbezaan dalam pelbagai unit masa, seperti tahun, bulan, hari, jam, minit dan saat. Ia mengendalikan kedua-dua nilai positif dan negatif dengan betul.

Dengan menggunakan ChronoUnit, kod anda akan memberikan hasil yang tepat untuk semua senario.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Kejadian Java 8 LocalDateTime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn