Duration i Period
Obliczaj różnice czasu z bezpiecznym typowaniem za pomocą Duration i Period.
Porównanie kodu
✕ Pre-Java 8
// How many days between two dates?
long diff = date2.getTime()
- date1.getTime();
long days = diff
/ (1000 * 60 * 60 * 24);
// ignores DST, leap seconds
✓ Java 8+
long days = ChronoUnit.DAYS
.between(date1, date2);
Period period = Period.between(
date1, date2);
Duration elapsed = Duration.between(
time1, time2);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Bezpieczne typowanie
Duration dla czasu, Period dla dat — bez pomyłek.
Poprawna arytmetyka
Obsługuje przejścia czasu letniego, lata przestępne i sekundy przestępne.
Czytelność
ChronoUnit.DAYS.between() czyta się jak naturalny język.
Stare podejście
Arytmetyka na milisekundach
Nowoczesne podejście
Duration / Period
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Duration i Period
Dostępne
Szeroko dostępne od JDK 8 (marzec 2014)
Jak to działa
Duration służy do ilości czasu (godziny, minuty, sekundy). Period służy do ilości dat (lata, miesiące, dni). ChronoUnit.between() do prostych różnic. Wszystkie typy poprawnie obsługują przypadki brzegowe.
Powiązana dokumentacja
Dowód