0Pricing
Java Academy · Lekcja

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, plusMonths i plusYears przesuwają daty w sposób niezmienny
  • Period mierzy lata, miesiące i dni, dlatego idealnie nadaje się do obliczania wieku
  • Period.between przedstawia odstęp w zrozumiałym dla człowieka rozkładzie
  • ChronoUnit.between zwraca jedną łączną wartość w wybranej jednostce
  • TemporalAdjusters obsł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

  1. LocalDate, LocalTime, LocalDateTime
  2. Instant i Duration
  3. Period i arytmetyka dat
  4. Formatowanie za pomocą DateTimeFormatter
← Powrót do Java Academy