Java 8: Menentukan Perbezaan Temporal antara Dua Tarikh Tempatan
Mengira perbezaan antara dua objek LocalDateTime, dinyatakan dalam tahun, bulan, hari, jam , minit dan saat, boleh menjadi tugas yang rumit. Satu pendekatan ialah menggunakan kelas Tempoh dan Tempoh yang diperkenalkan di Java 8. Walau bagaimanapun, jika perbezaan itu melibatkan nilai negatif, seperti yang ditunjukkan oleh kod anda, ia boleh membawa kepada hasil yang salah.
Isunya
Kod anda mengira tempoh antara dua tarikh, mewakili tahun, bulan dan hari. Ia kemudian mengira perbezaan masa dari segi saat dan menukar saat ini kepada jam, minit dan saat. Walau bagaimanapun, ia tidak mengambil kira nilai negatif yang mungkin timbul apabila tarikh "dari" lebih besar daripada tarikh "hingga".
Penyelesaian
Untuk menangani isu ini, kita boleh menggunakan enum ChronoUnit untuk menentukan perbezaan masa secara langsung. ChronoUnit menyediakan cara mudah untuk mengira unit temporal, seperti minit dan jam, antara dua objek LocalDateTime.
Berikut ialah kod yang dikemas kini menggunakan ChronoUnit:
import java.time.ChronoUnit; import java.time.LocalDateTime; public class Main { public static void main(String[] args) { LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45); LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55); long years = ChronoUnit.YEARS.between(fromDateTime, toDateTime); long months = ChronoUnit.MONTHS.between(fromDateTime, toDateTime); long days = ChronoUnit.DAYS.between(fromDateTime, toDateTime); long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime); long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime); long seconds = ChronoUnit.SECONDS.between(fromDateTime, toDateTime); System.out.println(years + " years " + months + " months " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds."); } }
Dengan pengubahsuaian ini, kod anda harus mengira dengan tepat perbezaan masa antara dua objek LocalDateTime.
Atas ialah kandungan terperinci Bagaimanakah Java 8 Boleh Mengira Perbezaan Temporal Dengan Tepat Antara Dua Tarikh Tempatan, Mengendalikan Nilai Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!