Rumah >Java >javaTutorial >Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Kejadian Java 8 LocalDateTime?
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!