Creare un istante dai secondi
La classe Instant rappresenta un istante come secondi dall'Epoch e una frazione in nanosecondi. Usa ofEpochSecond per i secondi e ofEpochMilli per i millisecondi.
import java.time.Instant;
import java.time.Duration;
import java.time.ZoneId;
Instant instant = Instant.ofEpochSecond(1711972800L);
System.out.println(instant); // 2024-04-01T12:00:00Z
System.out.println(instant.toEpochMilli()); // 1711972800000
System.out.println(instant.atZone(ZoneId.of("Europe/Paris")));Confrontare due timestamp
Confronta gli istanti dopo aver convertito le unità. isBefore, isAfter e equals rispondono a domande diverse dalla semplice visualizzazione dell'ora locale.
Instant start = Instant.parse("2024-04-01T12:00:00Z");
Instant end = Instant.parse("2024-04-01T14:30:00Z");
System.out.println(start.isBefore(end)); // true
System.out.println(Duration.between(start, end).toSeconds()); // 9000Interoperabilità con JDBC
La classe storica è java.sql.Timestamp, non java.util.Timestamp. Usa Timestamp.from(instant) e timestamp.toInstant() se il livello JDBC lo richiede. La memorizzazione SQL e il driver devono usare una convenzione coerente per il fuso orario.
LocalDateTime rappresenta campi di calendario senza fuso orario. Da solo non basta per ricavare un timestamp universale. Per le durate di esecuzione, preferisci un orologio monotono come System.nanoTime().
Riferimenti
Versione italiana pubblicata il 26 settembre 2026.