Créer un instant à partir de secondes
La classe Instant représente un instant avec des secondes depuis l’Epoch et une fraction en nanosecondes. Utilisez ofEpochSecond pour des secondes et ofEpochMilli pour des millisecondes.
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")));Comparer deux timestamps
Comparez les instants après avoir converti leurs unités. isBefore, isAfter et equals répondent à des questions différentes d’un simple affichage de l’heure 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()); // 9000Interopérer avec JDBC
La classe historique est java.sql.Timestamp, et non java.util.Timestamp. Utilisez Timestamp.from(instant) et timestamp.toInstant() si votre couche JDBC l’exige. Le stockage SQL et le pilote doivent avoir une convention de fuseau cohérente.
LocalDateTime représente des champs de calendrier sans fuseau. Il ne suffit pas, seul, à retrouver un timestamp universel. Pour les durées d’exécution, privilégiez une horloge monotone telle que System.nanoTime().