Qu’est-ce qu’un timestamp Unix (et pourquoi les développeurs l’utilisent) ?

Un timestamp Unix est un seul entier : le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Ce moment s’appelle l’époque Unix (Unix epoch), et chaque seconde depuis a été comptée sans interruption.

Le timestamp actuel « maintenant » se situe quelque part autour de 1,750,000,000. À lui seul, ce nombre indique à n’importe quel ordinateur, base de données ou API quel instant précis vous voulez dire — sans ambiguïté.

Pourquoi 1970 ?

Unix a été développé à la fin des années 1960 aux Bell Labs. Quand les ingénieurs ont eu besoin d’un point de référence fixe pour le temps, ils ont choisi le 1er janvier 1970 — début d’une nouvelle décennie, facile à raisonner, et suffisamment proche dans le passé pour que les dates stockées n’aient pas besoin de nombres négatifs dans les cas pratiques de l’époque.

C’était un choix pragmatique, pas un choix « théorique ». Et il est resté.

Le problème que résolvent les timestamps Unix

Représenter des dates sous forme de chaînes lisibles par des humains crée de l’ambiguïté à tous les niveaux :

  • Désaccords de format : 03/04/25, c’est le 3 avril ou le 4 mars ? Et 1925 ou 2025 ?
  • Confusion de fuseaux horaires : « 15h vendredi » ne correspond pas au même instant à Londres et à Tokyo
  • Différences de locale : certains pays écrivent jour-mois-année, d’autres mois-jour-année

Un timestamp Unix évite tout cela. 1711929600 représente un instant unique, peu importe où vous êtes ou quel format vous préférez. Les machines s’accordent ; les humains convertissent.

Secondes, millisecondes et microsecondes

Le timestamp Unix d’origine est en secondes. Mais différents systèmes utilisent des résolutions différentes :

FormatUnitéExemple
Unix (POSIX)Secondes1711929600
JavaScript Date.now()Millisecondes1711929600000
Python time.time()Secondes (float)1711929600.123
Timestamps en baseSouvent microsecondes1711929600000000

C’est l’une des sources de bugs les plus fréquentes quand on travaille entre systèmes. Un timestamp JavaScript passé directement à une fonction Python ou Go sera 1,000× trop grand. Vérifiez toujours la résolution quand vous traversez des frontières entre systèmes.

Lire et écrire des timestamps Unix

En JavaScript / TypeScript

// Timestamp actuel en secondes
Math.floor(Date.now() / 1000)

// Timestamp actuel en millisecondes
Date.now()

// Convertir un timestamp (secondes) en objet Date
new Date(timestamp * 1000)

// Convertir une Date en timestamp (secondes)
Math.floor(new Date('2024-04-01').getTime() / 1000)

En Python

import time, datetime

# Timestamp actuel (float)
time.time()

# Convertir en datetime
datetime.datetime.fromtimestamp(1711929600)

# Convertir un datetime en timestamp
datetime.datetime(2024, 4, 1).timestamp()

En SQL (PostgreSQL)

-- Timestamp actuel
EXTRACT(EPOCH FROM NOW())::int

-- Convertir en timestamp
TO_TIMESTAMP(1711929600)

Les fuseaux horaires ne modifient pas le timestamp lui-même

C’est un point important et souvent mal compris.

Un timestamp Unix représente toujours un instant en UTC. Quand vous l’affichez, vous le convertissez dans un fuseau horaire local. Quand vous le stockez, vous stockez la valeur UTC. Le timestamp lui-même est neutre vis‑à‑vis du fuseau horaire.

Cela signifie :

  • Deux utilisateurs dans des fuseaux différents qui stockent « maintenant » obtiendront le même timestamp
  • À l’affichage, chacun verra l’heure dans son fuseau local
  • Pas besoin d’ajuster des offsets en base — seulement au niveau présentation

Le problème de l’an 2038

Les timestamps Unix stockés dans un entier signé 32 bits ne peuvent compter que jusqu’à 2,147,483,647 secondes — ce qui correspond au 19 janvier 2038 à 03:14:07 UTC. Après cela, un compteur 32 bits « boucle » et devient un grand nombre négatif.

Les systèmes qui stockent encore les timestamps en 32 bits casseront à cette date. La plupart des systèmes modernes utilisent des entiers 64 bits, ce qui repousse l’overflow à l’année 292 milliards — sans intérêt pratique.

Si vous travaillez avec des systèmes embarqués, des bases legacy ou du vieux code C, ça vaut le coup de vérifier comment les timestamps sont stockés.

Quand utiliser un timestamp Unix

Utilisez un timestamp Unix pour :

  • Stocker des dates en base sous forme d’entier simple et triable
  • Passer des dates entre systèmes ou APIs
  • Comparer ou trier des événements chronologiquement
  • Calculer des durées (il suffit de soustraire deux timestamps)
  • Gérer des caches et des expirations (expires_at = now + 3600)

Utilisez une chaîne de date formatée pour :

  • Afficher une date à un utilisateur
  • Journaliser des événements de manière lisible
  • Travailler dans des tableurs ou des exports CSV

Conversions rapides

DuréeSecondes
1 minute60
1 heure3,600
1 jour86,400
1 semaine604,800
30 jours2,592,000
1 an (approx.)31,536,000

Le Unix Timestamp Converter convertit n’importe quel timestamp en date lisible ou convertit une date en timestamp Unix instantanément.

Articles associés