Rumah > Java > javaTutorial > Bagaimanakah Java 8 Boleh Mengira Perbezaan Antara Dua Kejadian LocalDateTime dalam Tahun, Bulan, Hari, Jam dan Minit?

Bagaimanakah Java 8 Boleh Mengira Perbezaan Antara Dua Kejadian LocalDateTime dalam Tahun, Bulan, Hari, Jam dan Minit?

Mary-Kate Olsen
Lepaskan: 2024-12-15 12:46:12
asal
159 orang telah melayarinya

How Can Java 8 Accurately Calculate the Difference Between Two LocalDateTime Instances in Years, Months, Days, Hours, and Minutes?

Java 8: Mengira Perbezaan Antara Dua Kejadian LocalDateTime dalam Berbilang Unit

Mengira perbezaan antara dua kejadian LocalDateTime dalam pelbagai unit masa boleh hadir cabaran. Satu pendekatan ialah memanfaatkan kelas Tempoh dan Tempoh yang diperkenalkan di Java 8.

Cabaran dengan Pelaksanaan Awal

Kod yang disediakan cuba mengira perbezaan dengan menggabungkan Tempoh ( yang mengendalikan tahun, bulan dan hari) dan Tempoh (yang mengurus jam, minit dan saat). Walau bagaimanapun, terdapat beberapa ketidakkonsistenan dalam pengiraan:

  • Kaedah getTime salah mengira perbezaan masa selepas beberapa bulan.
  • Nilai masa negatif yang dilaporkan untuk pasangan tarikh-masa tertentu menunjukkan masalah dengan mengendalikan perbezaan negatif.

Diperbaiki Pengiraan

Untuk memastikan pengiraan yang tepat, pertimbangkan untuk menggunakan enum ChronoUnit, yang menyediakan kaedah untuk mengekstrak unit masa tertentu daripada tarikh dan masa. Berikut ialah versi yang dipertingkatkan:

import java.time.ChronoUnit;
import java.time.LocalDateTime;
import java.time.Period;

public class CalculateLocalDateTimeDifference {

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

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

        System.out.println(period.getYears() + " years " +
                period.getMonths() + " months " +
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes.");
    }
}
Salin selepas log masuk

Penjelasan

  • Tempoh.antara mengira perbezaan dalam tahun, bulan dan hari sehingga titik masa yang ditentukan .
  • ChronoUnit.MINUTES.antara mengekstrak perbezaan masa dalam minit antara keduanya Kejadian LocalDateTime.
  • Begitu juga, ChronoUnit.HOURS.between memperoleh perbezaan dalam jam.

Algoritma yang dipertingkatkan ini memberikan hasil yang tepat untuk perbezaan masa positif dan negatif.

Atas ialah kandungan terperinci Bagaimanakah Java 8 Boleh Mengira Perbezaan Antara Dua Kejadian LocalDateTime dalam Tahun, Bulan, Hari, Jam dan Minit?. 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