Rumah >Java >javaTutorial >Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Objek LocalDateTime di Java?

Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Objek LocalDateTime di Java?

DDD
DDDasal
2024-12-10 13:10:15454semak imbas

How to Accurately Calculate the Time Difference Between Two LocalDateTime Objects in Java?

Mengira Perbezaan Masa antara Objek LocalDateTime

Untuk menangani kebimbangan anda, mengira perbezaan masa antara dua objek LocalDateTime memerlukan pendekatan komprehensif yang boleh dengan tepat mewakili jangka masa dalam berbilang unit.

API Java 8 menyediakan Tempoh dan Tempoh kelas untuk mengendalikan ini dengan berkesan. Tempoh mewakili selang masa dari segi tahun, bulan dan hari, manakala Tempoh memperkatakan jam, minit dan saat.

Kod sedia ada anda menggunakan Tempoh dan Tempoh untuk menentukan perbezaan masa, tetapi terdapat sedikit pengubahsuaian diperlukan. Berikut ialah kod yang dikemas kini:

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;

public class Main {

    static final int MINUTES_PER_HOUR = 60;
    static final int SECONDS_PER_MINUTE = 60;
    static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;

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

        long seconds = Duration.between(fromDateTime, toDateTime).getSeconds();

        long hours = seconds / SECONDS_PER_HOUR;
        long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
        long secs = (seconds % SECONDS_PER_MINUTE);

        System.out.println(period.getYears() + " years " + 
                period.getMonths() + " months " + 
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes " +
                secs + " seconds.");
    }
}

Perubahan utama di sini ialah menggunakan Duration.between(fromDateTime, toDateTime).getSeconds(); untuk mengira perbezaan saat. Ini memastikan ketepatan apabila berurusan dengan rentang masa yang merentasi tengah malam atau mempunyai nilai negatif.

Apabila nombor negatif terlibat, Tempoh mengendalikannya dengan betul, memberikan perbezaan masa sebagai nilai negatif. Selain itu, menggunakan ChronoUnit untuk penukaran unit tertentu ialah pendekatan yang boleh dipercayai.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Objek LocalDateTime di Java?. 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