Java Snippets

Extraits de timestamp Unix en Java

Exemples Java pour les secondes epoch actuelles, les millisecondes, la conversion avec Instant, le formatage tenant compte du fuseau et les API modernes de java.time.

Current Unix timestamp (seconds)
import java.time.Instant;

Instant.now().getEpochSecond()
Current Unix timestamp (milliseconds)
System.currentTimeMillis()
// or
Instant.now().toEpochMilli()
Instant from timestamp
import java.time.Instant;

Instant.ofEpochSecond(1700000000)
Instant.ofEpochMilli(1700000000000L)
Formatted string (UTC)
import java.time.*;
import java.time.format.DateTimeFormatter;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneOffset.UTC)
    .format(DateTimeFormatter.ISO_DATE_TIME)
In a specific timezone
import java.time.*;

Instant.ofEpochSecond(1700000000)
    .atZone(ZoneId.of("America/New_York"))
    .toString()

Bases des horodatages en Java

Le code Java moderne devrait préférer java.time.Instant pour le travail sur les horodatages. Instant.now().getEpochSecond() donne des secondes Unix et Instant.now().toEpochMilli() donne des millisecondes Unix.

Des millis Java à l'horodatage Unix

Le code Java commence souvent par System.currentTimeMillis() — un long de millisecondes epoch. Pour un horodatage Unix standard en secondes, divisez par 1000. Pour une date, construisez un Instant. Utilisez les conversions explicites ci-dessous plutôt que de faire transiter le long par différentes API susceptibles d'attendre l'une ou l'autre unité.

  • long millis = System.currentTimeMillis(); // 13 digits, epoch ms
  • long secs = System.currentTimeMillis() / 1000L; // millis to Unix timestamp
  • Instant inst = Instant.ofEpochMilli(millis); // currentTimeMillis to date (Instant)
  • String iso = Instant.ofEpochMilli(millis).toString(); // ISO 8601 UTC
  • ZonedDateTime zdt = Instant.ofEpochMilli(millis).atZone(ZoneId.of("UTC"));
  • Utilisez System.nanoTime() uniquement pour mesurer des durées écoulées — il n'est pas basé sur l'epoch

Formatage Java tenant compte du fuseau

Convertissez un Instant en ZonedDateTime avec ZoneId pour afficher l'heure locale. Gardez le stockage et les comparaisons en Instant ou UTC, et formatez seulement en bordure de l'application.

Notes de production pour Java

L'API java.time sépare les instants, les valeurs calendaires locales et l'affichage tenant compte du fuseau. Utilisez Instant pour le moment à stocker ou à comparer. N'utilisez ZonedDateTime qu'après avoir choisi une ZoneId pour un utilisateur, un locataire ou un rapport. Évitez les anciens Date et Calendar, sauf si une bibliothèque plus ancienne les exige.

  • Utilisez Instant.now().getEpochSecond() pour des secondes Unix
  • Utilisez Instant.now().toEpochMilli() ou System.currentTimeMillis() pour des millisecondes
  • Utilisez Instant.ofEpochSecond(seconds) en recevant des horodatages Unix standard
  • Utilisez DateTimeFormatter.ISO_INSTANT pour une sortie d'API UTC compacte

FAQ

Le nouveau code doit-il utiliser Date ou Instant ?
Utilisez Instant pour le stockage et la comparaison d'horodatages. L'ancien Date peut encore apparaître dans de vieilles bibliothèques, mais java.time est plus clair pour les secondes, les millisecondes et le formatage conscient du fuseau.
Quelle est la différence entre Instant et ZonedDateTime ?
Instant est le moment exact en UTC. ZonedDateTime est ce moment affiché avec un ZoneId, ce qui est utile pour les dates et rapports destinés à l'utilisateur.
Comment vérifier les valeurs epoch en Java ?
Affichez Instant.ofEpochSecond(seconds) ou Instant.ofEpochMilli(milliseconds) avant d'enregistrer une valeur. La sortie ISO devrait correspondre à l'instant UTC attendu par le système destinataire.
Comment convertir des millis en horodatage Unix en Java ?
Divisez System.currentTimeMillis() par 1000L pour obtenir un long de secondes Unix : long secs = System.currentTimeMillis() / 1000L. Utilisez Instant.ofEpochSecond(secs) pour revenir à un Instant.
Comment convertir currentTimeMillis en date en Java ?
Enveloppez-le dans un Instant : Instant.ofEpochMilli(System.currentTimeMillis()). Pour l'affichage, combinez-le avec un ZoneId : ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) ou toute autre zone IANA.