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
Lepaskan: 2024-12-06 05:28:14
asal
544 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan