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
Mary-Kate Olsenasal
2024-12-15 12:46:12162semak imbas

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.");
    }
}

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!

Kenyataan:
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