Timestamp : secondes ou millisecondes ?
Mis à jour : mai 2026
La confusion secondes / millisecondes est l'erreur timestamp la plus fréquente. Elle produit des dates en 1970, des expirations JWT absurdes ou des événements placés des décennies trop loin.
Gratuit · sans upload · calcul local
Règle des chiffres
- 10 chiffres : secondes, exemple
1735689600. - 13 chiffres : millisecondes, exemple
1735689600000. - 16 chiffres : microsecondes.
- 19 chiffres : nanosecondes.
Cette règle est une heuristique, mais elle couvre l'immense majorité des timestamps modernes.
Pourquoi JavaScript utilise les millisecondes
L'objet Date JavaScript représente le temps en millisecondes depuis l'epoch Unix. Les APIs serveur, les bases de données et les tokens JWT utilisent souvent des secondes. Il faut donc convertir à la frontière entre front-end et back-end.
Conversion
// Secondes vers millisecondes
const ms = seconds * 1000;
// Millisecondes vers secondes
const seconds = Math.floor(ms / 1000);
// Détection simple
const unit = Math.abs(value) > 1e10 ? 'ms' : 's';
Symptômes d'une mauvaise unité
- La date affichée tombe en janvier 1970.
- Un JWT semble expirer dans 55 000 ans.
- Un webhook paraît envoyé à une date impossible.
- Une requête SQL ne retourne aucun résultat pour une plage pourtant correcte.
Cas particuliers
Certains systèmes utilisent des timestamps en microsecondes ou nanosecondes, notamment les logs très précis, Go avec UnixNano(), PostgreSQL avec des précisions fines, et certains systèmes financiers. Dans ce cas, divisez par 1000, 1_000_000 ou 1_000_000_000 selon l'unité attendue.
Questions fréquentes
Un timestamp JWT est-il en millisecondes ?
Non. Les claims JWT exp, iat et nbf sont des NumericDate en secondes.
Date.now() est-il compatible avec un timestamp Unix classique ?
Pas directement : Date.now() est en millisecondes. Divisez par 1000 pour obtenir des secondes.
Peut-on deviner l'unité automatiquement ?
Oui dans la plupart des cas en regardant la magnitude ou le nombre de chiffres.