Period i arytmetyka dat
Dodawaj i odejmuj daty
Period i arytmetyka dat to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Wartości oparte na dacie
Podczas gdy Duration mierzy czas w godzinach i sekundach, Period mierzy wartości wyrażone w latach, miesiącach i dniach. Jest właściwym narzędziem do obliczeń kalendarzowych, takich jak obliczanie wieku i terminów.
Dodawanie dni
LocalDate udostępnia metodę plusDays, która przesuwa datę do przodu. Należy pamiętać, że wynik jest nową, niezmienną wartością.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2026, 5, 30);
System.out.println(start.plusDays(10));
}
}Dodawanie miesięcy i lat
Metody plusMonths i plusYears przesuwają datę o większe jednostki i prawidłowo uwzględniają różną długość miesięcy.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2026, 1, 31);
System.out.println(start.plusMonths(1));
System.out.println(start.plusYears(2));
}
}Odejmowanie od dat
Do przesuwania daty wstecz należy używać metod minusDays, minusWeeks i podobnych.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.minusWeeks(2));
}
}Tworzenie obiektu Period
Obiekt Period należy utworzyć za pomocą of lub metod fabrykujących dla pojedynczych jednostek, takich jak ofMonths, a następnie dodać go do daty.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
Period p = Period.of(1, 2, 3);
LocalDate date = LocalDate.of(2026, 1, 1);
System.out.println(date.plus(p));
}
}Period między datami
Period.between mierzy odstęp między dwiema datami, wyrażając go w latach, miesiącach i dniach.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2020, 1, 15);
LocalDate to = LocalDate.of(2026, 5, 30);
Period p = Period.between(from, to);
System.out.println(p.getYears() + "y " + p.getMonths() + "m " + p.getDays() + "d");
}
}Obliczanie wieku
Klasycznym zastosowaniem Period.between jest obliczanie czyjegoś wieku w pełnych latach.
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate birth = LocalDate.of(2000, 6, 15);
LocalDate today = LocalDate.of(2026, 5, 30);
int age = Period.between(birth, today).getYears();
System.out.println(age);
}
}Zliczanie łącznej liczby dni
Period rozkłada odstęp na lata, miesiące i dni. Aby uzyskać jedną łączną liczbę dni, należy zamiast tego użyć ChronoUnit.DAYS.between.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2026, 1, 1);
LocalDate to = LocalDate.of(2026, 12, 31);
long days = ChronoUnit.DAYS.between(from, to);
System.out.println(days);
}
}Elastyczność ChronoUnit
ChronoUnit może zliczać wiele jednostek: DAYS, WEEKS, MONTHS i YEARS. Każde wywołanie between zwraca jedną liczbę.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate from = LocalDate.of(2026, 1, 1);
LocalDate to = LocalDate.of(2026, 12, 31);
System.out.println(ChronoUnit.WEEKS.between(from, to));
System.out.println(ChronoUnit.MONTHS.between(from, to));
}
}Znajdowanie następnego dnia tygodnia
Klasa TemporalAdjusters udostępnia inteligentne korekty, takie jak przejście do pierwszego dnia następnego miesiąca.
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.with(TemporalAdjusters.firstDayOfNextMonth()));
}
}Period a ChronoUnit
Period należy stosować, gdy potrzebny jest zrozumiały dla człowieka rozkład na lata, miesiące i dni. ChronoUnit.between służy do uzyskania jednej łącznej wartości w wybranej jednostce.
Szybki test
Sprawdź umiejętność wykonywania działań na datach.
Podsumowanie
Poznałeś działania na datach:
- Metody
plusDays,plusMonthsiplusYearsprzesuwają daty w sposób niezmienny Periodmierzy lata, miesiące i dni, dlatego idealnie nadaje się do obliczania wiekuPeriod.betweenprzedstawia odstęp w zrozumiałym dla człowieka rozkładzieChronoUnit.betweenzwraca jedną łączną wartość w wybranej jednostceTemporalAdjustersobsługuje inteligentne przejścia, takie jak przejście do pierwszego dnia następnego miesiąca
Często zadawane pytania
Czy lekcja „Period i arytmetyka dat” jest bezpłatna?
Tak — pełny tekst „Period i arytmetyka dat” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Period i arytmetyka dat”?
Dodawaj i odejmuj daty Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Period i arytmetyka dat”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- LocalDate, LocalTime, LocalDateTime
- Instant i Duration
- Period i arytmetyka dat
- Formatowanie za pomocą DateTimeFormatter