Instant.ofEpochSecond în Java

Transformă un timestamp Unix (secunde de la 1970) în Instant; toEpochMilli face drumul invers, în milisecunde.

Sintaxă
static Instant ofEpochSecond(long secunde)
static Instant ofEpochMilli(long milisecunde)
long toEpochMilli()
long getEpochSecond()

Ce face Instant.ofEpochSecond

Multe sisteme rețin timpul ca număr: secunde (Unix, baze de date, JWT) sau milisecunde (JavaScript, System.currentTimeMillis()) de la 1 ianuarie 1970 UTC. Instant.ofEpochSecond(n) și Instant.ofEpochMilli(n) transformă aceste numere în momente.

toEpochMilli() face drumul invers și returnează milisecundele ca long; getEpochSecond() returnează secundele. Valorile negative înseamnă momente dinainte de 1970.

Parametri

Parametru Descriere
secunde Numărul de secunde de la 1970-01-01T00:00:00Z.

Ce returnează

ofEpochSecond: un Instant. toEpochMilli: milisecundele, ca long.

Exemple

Exemplul 1: Din timestamp în dată și înapoi

import java.time.Instant;
import java.time.ZoneId;

public class Main {
    public static void main(String[] args) {
        Instant t = Instant.ofEpochSecond(1_800_000_000L);
        System.out.println("UTC:       " + t);
        System.out.println("București: " + t.atZone(ZoneId.of("Europe/Bucharest")).toLocalDateTime());
        System.out.println("Milisecunde: " + t.toEpochMilli());
        System.out.println("Epoca: " + Instant.ofEpochSecond(0));
    }
}

Rezultat

UTC:       2027-01-15T08:00:00Z
București: 2027-01-15T10:00
Milisecunde: 1800000000000
Epoca: 1970-01-01T00:00:00Z

Exemplul 2: Timestamp venit din JavaScript

Date.now() din JavaScript dă milisecunde; le citim cu ofEpochMilli.

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

public class Main {
    public static void main(String[] args) {
        long dinBrowser = 1_792_420_200_000L;
        Instant trimis = Instant.ofEpochMilli(dinBrowser);
        Instant primit = Instant.parse("2026-10-19T11:30:02.750Z");
        System.out.println("Trimis: " + trimis);
        System.out.println("Întârziere: " + Duration.between(trimis, primit).toMillis() + " ms");
        System.out.println("În secunde: " + trimis.getEpochSecond());
    }
}

Rezultat

Trimis: 2026-10-19T14:30:00Z
Întârziere: -10797250 ms
În secunde: 1792420200

Greșeli frecvente

  • Dai milisecunde lui ofEpochSecond. Rezultatul este în anul 58000 și ceva; pentru milisecunde folosește ofEpochMilli.
  • Pierzi precizia: toEpochMilli() renunță la micro- și nanosecunde.

Comenzi înrudite

  • Instant: Un moment exact pe axa timpului, în UTC, măsurat în secunde și nanosecunde de la 1 ianuarie 1970.
  • Duration.toMinutes: Transformă durata într-un număr total de minute (toMinutes) sau milisecunde (toMillis), tăind restul.
  • 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.