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:
Instantto precyzyjny punkt na osi czasu UTC, liczonej od epoki 1970Durationto wartość czasu tworzona za pomocą metod takich jakofHoursDuration.betweenmierzy czas, który upłynął- Punkty w czasie można przesuwać za pomocą metod
plusiminus Instantnależy stosować do znaczników czasu, aLocalDateTimedo 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
- LocalDate, LocalTime, LocalDateTime
- Instant i Duration
- Period i arytmetyka dat
- Formatowanie za pomocą DateTimeFormatter