Rumah > Java > javaTutorial > Bagaimanakah Java 8 Boleh Mengira Perbezaan Temporal Dengan Tepat Antara Dua Tarikh Tempatan, Mengendalikan Nilai Negatif?

Bagaimanakah Java 8 Boleh Mengira Perbezaan Temporal Dengan Tepat Antara Dua Tarikh Tempatan, Mengendalikan Nilai Negatif?

Mary-Kate Olsen
Lepaskan: 2024-12-08 05:55:11
asal
360 orang telah melayarinya

How Can Java 8 Accurately Calculate Temporal Differences Between Two LocalDates, Handling Negative Values?

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

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!

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