Ce face Instant
Instant este cel mai simplu mod de a reține „când s-a întâmplat ceva”: un număr de secunde și nanosecunde de la 1970-01-01T00:00:00Z (epoca Unix). Nu are fus orar, lună sau zi a săptămânii; este același în orice țară.
Instant.now() citește ceasul sistemului. Se folosește pentru marcaje de timp în jurnale, în baze de date sau pentru a măsura cât durează o operație. toString() afișează momentul în UTC, cu litera Z la final: 2026-10-19T11:30:00Z.
Pentru a afișa un Instant ca oră românească îl transformi: instant.atZone(ZoneId.of("Europe/Bucharest")).
Ce returnează
Un Instant.
Exemple
Exemplul 1: Momentul curent și durata unei operații
Valorile diferă la fiecare rulare.
import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant start = Instant.now();
long suma = 0;
for (int i = 0; i < 50_000_000; i++) {
suma += i;
}
Instant stop = Instant.now();
System.out.println("Start: " + start);
System.out.println("Suma: " + suma + ", a durat " + Duration.between(start, stop).toMillis() + " ms");
}
}
Rezultat posibil (diferă la fiecare rulare)
Start: 2026-10-19T11:31:07.482915Z
Suma: 1249999975000000, a durat 23 ms
Exemplul 2: Un marcaj de timp afișat ca oră românească
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
Instant comanda = Instant.parse("2026-10-19T11:30:00Z");
ZonedDateTime laNoi = comanda.atZone(ZoneId.of("Europe/Bucharest"));
System.out.println("În baza de date: " + comanda);
System.out.println("Pentru client: " + laNoi.toLocalDateTime());
System.out.println("Peste o oră: " + comanda.plusSeconds(3600));
}
}
Rezultat
În baza de date: 2026-10-19T11:30:00Z
Pentru client: 2026-10-19T14:30
Peste o oră: 2026-10-19T12:30:00Z
Greșeli frecvente
- Încerci
instant.getYear()sauplus(1, ChronoUnit.MONTHS).Instantnu are calendar; convertește întâi cuatZone. - Afișezi un
Instantdirect utilizatorilor. Ora apare în UTC (cu 2-3 ore mai puțin decât în România).
Comenzi înrudite
Instant.ofEpochSecond: Transformă un timestamp Unix (secunde de la 1970) în Instant; toEpochMilli face drumul invers, în milisecunde.Duration.between: Calculează timpul exact dintre două momente (ore, minute, secunde); negativ dacă sfârșitul e înaintea startului.ZonedDateTime: Data și ora împreună cu fusul orar (Europe/Bucharest); indică un moment exact și știe de ora de vară.ZoneId: Identifică un fus orar (Europe/Bucharest) cu regulile lui de oră de vară; of îl alege, systemDefault dă fusul sistemului.