0Pricing
Java Academy · Lekcja

Instant i Duration

Czas maszynowy i przedziały

Instant i Duration to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 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.

Czas maszynowy

Podczas gdy LocalDateTime służy do obsługi kalendarzy używanych przez ludzi, Instant reprezentuje precyzyjny punkt na maszynowej osi czasu, mierzony od epoki 1970-01-01 w UTC.

Duration reprezentuje odstęp czasu między dwoma punktami w czasie.

Tworzenie obiektu Instant

Instant.now() zapisuje bieżący moment. Aby uzyskać przewidywalny wynik, można utworzyć obiekt na podstawie stałej liczby sekund od epoki za pomocą ofEpochSecond.

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant fixed = Instant.ofEpochSecond(1000000000);
        System.out.println(fixed);
    }
}

Sekundy epoki i milisekundy

Bazowe wartości epoki można odczytać za pomocą metod getEpochSecond i toEpochMilli. Są one przydatne przy tworzeniu znaczników czasu i zapisywaniu danych.

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant t = Instant.ofEpochSecond(1500000000);
        System.out.println(t.getEpochSecond());
        System.out.println(t.toEpochMilli());
    }
}

Tworzenie obiektu Duration

Obiekt Duration należy tworzyć za pomocą metod fabrykujących, takich jak ofHours, ofMinutes i ofSeconds.

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.ofMinutes(90);
        System.out.println(d);
        System.out.println(d.toHours());
    }
}

Duration między punktami w czasie

Duration.between mierzy odstęp między dwoma punktami w czasie. Jest to standardowy sposób mierzenia czasu trwania operacji.

import java.time.Duration;
import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant start = Instant.ofEpochSecond(1000);
        Instant end = Instant.ofEpochSecond(1075);
        Duration elapsed = Duration.between(start, end);
        System.out.println(elapsed.getSeconds());
    }
}

Konwertowanie wartości Duration

Obiekt Duration może zwrócić swoją wartość w różnych jednostkach za pomocą metod toMinutes, toHours, toDays i toMillis.

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.ofSeconds(7320);
        System.out.println(d.toMinutes());
        System.out.println(d.toHours());
    }
}

Dodawanie do obiektu Instant

Punkt w czasie można przesunąć do przodu lub do tyłu za pomocą metod plus i minus, przekazując obiekt Duration.

import java.time.Duration;
import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant now = Instant.ofEpochSecond(1000);
        Instant later = now.plus(Duration.ofHours(2));
        System.out.println(later.getEpochSecond());
    }
}

Pomocnicze metody plus

Metody pomocnicze, takie jak plusSeconds i plusMillis, pozwalają pominąć tworzenie obiektu Duration przy prostych przesunięciach.

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant t = Instant.ofEpochSecond(0);
        System.out.println(t.plusSeconds(3600).getEpochSecond());
    }
}

Porównywanie punktów w czasie

Do ustalania kolejności dwóch punktów na osi czasu należy używać metod isBefore i isAfter.

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant a = Instant.ofEpochSecond(100);
        Instant b = Instant.ofEpochSecond(200);
        System.out.println(a.isBefore(b));
    }
}

Ujemne wartości Duration

Jeśli koniec przypada wcześniej niż początek, wartość Duration jest ujemna. Metody isNegative i abs ułatwiają obsługę takiej sytuacji.

import java.time.Duration;
import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.between(Instant.ofEpochSecond(200), Instant.ofEpochSecond(100));
        System.out.println(d.isNegative());
        System.out.println(d.abs().getSeconds());
    }
}

Instant a LocalDateTime

Instant należy stosować do znaczników czasu, rejestrowania zdarzeń i mierzenia czasu, który upłynął, ponieważ jednoznacznie określa czas UTC. LocalDateTime służy do wartości kalendarzowych używanych przez ludzi, gdy obsługa strefy czasowej odbywa się w innym miejscu.

Szybki test

Sprawdź zrozumienie działania typów Instant i Duration.

Podsumowanie

Poznałeś czas maszynowy:

  • Instant to precyzyjny punkt na osi czasu UTC, liczonej od epoki 1970
  • Duration to wartość czasu tworzona za pomocą metod takich jak ofHours
  • Duration.between mierzy czas, który upłynął
  • Punkty w czasie można przesuwać za pomocą metod plus i minus
  • Instant należy stosować do znaczników czasu, a LocalDateTime do dat używanych przez ludzi

Często zadawane pytania

Czy lekcja „Instant i Duration” jest bezpłatna?

Tak — pełny tekst „Instant i Duration” 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 „Instant i Duration”?

Czas maszynowy i przedziały Ć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 2 z 4.

Ile czasu zajmuje lekcja „Instant i Duration”?

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