Java:
Porównywanie dwóch dat

Jak to zrobić?

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;

public class DateComparison {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, Month.MARCH, 10);
        LocalDate date2 = LocalDate.of(2023, Month.MARCH, 15);
        
        // Porównanie dat
        if (date1.isBefore(date2)) {
            System.out.println("Data1 jest wcześniejsza niż Data2.");
        } else if (date1.isAfter(date2)) {
            System.out.println("Data1 jest późniejsza niż Data2.");
        } else {
            System.out.println("Data1 i Data2 są tej samej daty.");
        }
        
        // Porównanie z dokładnością do sekundy
        LocalDateTime dateTime1 = LocalDateTime.of(2023, Month.MARCH, 10, 15, 30);
        LocalDateTime dateTime2 = LocalDateTime.of(2023, Month.MARCH, 10, 15, 45);
        
        boolean isAfter = dateTime1.isAfter(dateTime2);
        System.out.println("Czy dateTime1 jest późniejsza niż dateTime2? " + isAfter);
    }
}

Wynik:

Data1 jest wcześniejsza niż Data2.
Czy dateTime1 jest późniejsza niż dateTime2? false

Deep Dive

Porównywanie dat sięga początków informatyki. W Javie do Java 8 korzystano głównie z java.util.Date i java.util.Calendar, ale były skomplikowane w użyciu i niewystarczająco dokładne. Teraz java.time (z którym pracujemy powyżej) jest standardem, szeroko akceptowanym ze względu na przejrzystość i funkcjonalność.

Inne sposoby to porównywanie timestampów (w milisekundach) lub wykorzystanie bibliotek zewnętrznych, jak Joda-Time (choć od Java 8 mniej popularnych).

Detal implementacyjny: LocalDate i LocalDateTime są niemutowalne i wątkowo bezpieczne, co oznacza, że możesz używać ich bez obaw o spójność danych w aplikacjach wielowątkowych.

Zobacz również