Convertissez une date en timestamp Unix (secondes/ms) ou un timestamp en date lisible, avec fuseau horaire et affichage du temps relatif.
Convertisseur Unix Timestamp
📅 Date → Timestamp
🔢 Timestamp → Date
Qu'est-ce que le Unix Timestamp ?
Le Unix Timestamp (ou Epoch time) est une façon universelle de représenter un instant précis dans le temps. Il exprime le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, aussi appelé l'Epoch Unix.
Cette convention est utilisée dans tous les systèmes d'exploitation Unix/Linux, mais aussi dans la quasi-totalité des langages de programmation modernes (JavaScript, PHP, Python, Go, Rust…). C'est un entier simple, universel et indépendant de la langue ou du format d'affichage.
Pourquoi 1970 ?
La date du 1er janvier 1970 a été choisie par les développeurs des systèmes Unix dans les années 1970. À l'époque, cela représentait une date récente, facile à stocker sur des systèmes 32 bits. Cette convention s'est imposée comme standard mondial.
| Date/événement | Timestamp Unix (s) | Notes |
|---|---|---|
| 1er janv. 1970 00:00:00 UTC | 0 | Epoch Unix — point zéro |
| 1er janv. 2000 00:00:00 UTC | 946 684 800 | Bug an 2000 (Y2K) |
| 1er janv. 2024 00:00:00 UTC | 1 704 067 200 | Début 2024 |
| 19 janv. 2038 03:14:07 UTC | 2 147 483 647 | Limite entier 32 bits signé |
| 1er janv. 2100 00:00:00 UTC | 4 102 444 800 | 22e siècle |
Secondes vs millisecondes : quelle différence ?
Il existe deux variantes du timestamp Unix selon la précision requise :
⏱️ Secondes (Unix standard)
Nombre de secondes depuis l'Epoch. Utilisé par défaut dans la plupart des langages serveur.
1714521600
# 10 chiffres environ
Utilisé par : PHP time(), Python time.time(), Unix shell date +%s
⚡ Millisecondes (précision web)
Secondes × 1000. Nécessaire pour des applications temps réel où la précision à la seconde ne suffit pas.
1714521600000
# 13 chiffres environ
Utilisé par : JavaScript Date.now(), Java System.currentTimeMillis()
Comment détecter automatiquement secondes ou ms ?
La règle pratique est simple : si le timestamp comporte 13 chiffres ou plus, il s'agit de millisecondes. En dessous, ce sont des secondes. Notre outil applique cette détection automatique.
// JavaScript — détection automatique
function normalizeTimestamp(ts) {
// Timestamp en ms si >= 10^12 (13 chiffres)
return ts >= 1e12 ? ts : ts * 1000;
}
const tsMs = normalizeTimestamp(1714521600); // → 1714521600000
const tsMs2 = normalizeTimestamp(1714521600000); // → 1714521600000 (inchangé)
Fuseaux horaires et UTC
Le timestamp Unix est toujours basé sur UTC (Coordinated Universal Time). Il ne contient aucune information de fuseau horaire — c'est un point fixe dans le temps. L'affichage dépend du fuseau choisi.
UTC vs GMT vs fuseau local
| Fuseau | Décalage | Exemple pour ts = 1714521600 |
|---|---|---|
| UTC | +0:00 | 2024-05-01 00:00:00 |
| Europe/Paris (CEST) | +2:00 | 2024-05-01 02:00:00 |
| America/New_York (EDT) | -4:00 | 2024-04-30 20:00:00 |
| Asia/Tokyo (JST) | +9:00 | 2024-05-01 09:00:00 |
Conversion avec l'API Intl en JavaScript
// Afficher un timestamp dans un fuseau horaire spécifique
const ts = 1714521600; // secondes
const date = new Date(ts * 1000); // convertir en ms pour le constructeur Date
const options = {
timeZone: 'Europe/Paris',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit',
hour12: false
};
const formatter = new Intl.DateTimeFormat('fr-FR', options);
console.log(formatter.format(date));
// → "01/05/2024 02:00:00"
Intl gère automatiquement ces transitions, contrairement aux décalages fixes.
Conversion en JavaScript
JavaScript propose l'objet Date et l'API Intl pour manipuler les timestamps. Voici les opérations les plus courantes :
Obtenir le timestamp actuel
// Timestamp en millisecondes (méthode recommandée)
const nowMs = Date.now();
// → ex: 1714521600000
// Timestamp en secondes (comme Unix standard)
const nowSec = Math.floor(Date.now() / 1000);
// → ex: 1714521600
// Avec l'objet Date
const now = new Date();
const tsMs = now.getTime(); // millisecondes
const tsSec = now.valueOf() / 1000; // secondes (float)
Date → Timestamp
// À partir d'une chaîne ISO
const date = new Date('2024-05-01T00:00:00Z');
const ts = Math.floor(date.getTime() / 1000);
// → 1714521600
// À partir de composants
const date2 = new Date(Date.UTC(2024, 4, 1, 0, 0, 0)); // mois 0-indexé (4 = mai)
const ts2 = Math.floor(date2.getTime() / 1000);
// → 1714521600
Timestamp → Date lisible
const ts = 1714521600; // secondes
// Convertir en objet Date
const date = new Date(ts * 1000); // × 1000 pour ms
// Format ISO 8601
console.log(date.toISOString());
// → "2024-05-01T00:00:00.000Z"
// Format localisé France
console.log(date.toLocaleString('fr-FR', { timeZone: 'Europe/Paris' }));
// → "01/05/2024, 02:00:00"
Temps relatif (il y a X jours)
// Calcul du temps relatif
function timeAgo(ts) {
const now = Math.floor(Date.now() / 1000);
const diff = now - ts; // en secondes
if (diff < 60) return `il y a ${diff} seconde(s)`;
if (diff < 3600) return `il y a ${Math.floor(diff / 60)} minute(s)`;
if (diff < 86400) return `il y a ${Math.floor(diff / 3600)} heure(s)`;
if (diff < 2592000) return `il y a ${Math.floor(diff / 86400)} jour(s)`;
if (diff < 31536000) return `il y a ${Math.floor(diff / 2592000)} mois`;
return `il y a ${Math.floor(diff / 31536000)} an(s)`;
}
console.log(timeAgo(1714521600));
// → "il y a 1 jour(s)" (si lancé le 02/05/2024)
Conversion PHP et Python
PHP — manipulation des timestamps
<?php
// Timestamp actuel (secondes)
$now = time();
echo $now; // → 1714521600
// Date → Timestamp (avec fuseau)
$date = new DateTime('2024-05-01 00:00:00', new DateTimeZone('Europe/Paris'));
$ts = $date->getTimestamp();
echo $ts; // → 1714514400 (UTC, car Paris = UTC+2)
// Timestamp → Date formatée
$formatted = date('d/m/Y H:i:s', $ts);
echo $formatted; // → "01/05/2024 00:00:00"
// Avec fuseau horaire
date_default_timezone_set('Europe/Paris');
echo date('d/m/Y H:i:s', $ts);
// → "01/05/2024 00:00:00"
// Carbon (Laravel) — plus lisible
// $date = Carbon::createFromTimestamp($ts, 'Europe/Paris');
// echo $date->diffForHumans(); // → "il y a 1 jour"
?>
Python — datetime et timestamps
import time
from datetime import datetime, timezone
import pytz
# Timestamp actuel
ts = int(time.time())
print(ts) # → 1714521600
# Date → Timestamp
paris_tz = pytz.timezone('Europe/Paris')
dt = datetime(2024, 5, 1, 0, 0, 0, tzinfo=paris_tz)
ts = int(dt.timestamp())
print(ts) # → 1714514400
# Timestamp → Date lisible (UTC)
dt_utc = datetime.fromtimestamp(ts, tz=timezone.utc)
print(dt_utc.isoformat())
# → "2024-04-30T22:00:00+00:00"
# Timestamp → Date locale
dt_local = datetime.fromtimestamp(ts, tz=paris_tz)
print(dt_local.strftime('%d/%m/%Y %H:%M:%S'))
# → "01/05/2024 00:00:00"
MySQL / PostgreSQL
-- MySQL : date vers timestamp
SELECT UNIX_TIMESTAMP('2024-05-01 00:00:00');
-- → 1714514400 (heure serveur appliquée)
-- MySQL : timestamp vers date
SELECT FROM_UNIXTIME(1714521600);
-- → 2024-05-01 02:00:00 (si serveur sur UTC+2)
-- PostgreSQL : timestamp vers date ISO
SELECT TO_TIMESTAMP(1714521600);
-- → 2024-05-01 00:00:00+00
-- PostgreSQL : date vers timestamp
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2024-05-01 00:00:00 UTC');
-- → 1714521600
Cas d'usage courants
Bases de données
Stocker les dates comme entiers pour des comparaisons rapides, des tris et des index efficaces. Évite les problèmes de format.
JWT & tokens
Les JSON Web Tokens utilisent iat (issued at) et exp (expiration) comme timestamps Unix pour gérer la validité.
Analytics & logs
Les logs serveur (Nginx, Apache) et les outils analytics (Grafana, Elasticsearch) utilisent massivement les timestamps.
Synchronisation
Synchroniser des données entre serveurs de différents fuseaux horaires, ou détecter les conflits de concurrence.
Planification
Cron jobs, tâches planifiées, deadlines, rappels et notifications pushés à un timestamp précis.
APIs REST
Les APIs renvoient souvent des timestamps UTC. Cet outil aide à déboguer des réponses API et vérifier des dates d'expiration.
Questions fréquentes
Quelle est la différence entre timestamp Unix et timestamp JavaScript ?
Le timestamp Unix standard est en secondes, tandis que Date.now() en JavaScript retourne des millisecondes. Pour convertir : const unixTs = Math.floor(Date.now() / 1000). Notre outil accepte les deux formats et les détecte automatiquement.
Comment convertir un timestamp en "il y a X jours" ?
Calculez la différence entre le timestamp actuel et le timestamp cible, puis exprimez-la en unités lisibles. Notre outil affiche automatiquement ce temps relatif. Pour du code : soustrayez les deux timestamps en secondes et divisez par 86 400 pour obtenir des jours.
Est-ce que le timestamp Unix tient compte de l'heure d'été ?
Non. Le timestamp Unix est toujours en UTC, qui ne change pas avec l'heure d'été. Les ajustements d'heure d'été sont appliqués lors de la conversion en date locale. C'est l'une des grandes forces du timestamp : il est ambigu.
Qu'est-ce que le bug de l'an 2038 ?
Les systèmes 32 bits stockant le timestamp sur un entier signé atteignent leur valeur maximale (2 147 483 647) le 19 janvier 2038 à 03:14:07 UTC. Après ce point, la valeur déborde et revient à une date négative (1901). Les systèmes modernes 64 bits ne sont pas affectés.
Comment stocker des timestamps en base de données ?
Deux approches courantes : 1) Type DATETIME ou TIMESTAMP natif (MySQL, PostgreSQL) — lisible mais dépendant du fuseau du serveur. 2) Entier BIGINT stockant le timestamp Unix — portable, performant pour les index et comparaisons. La deuxième est recommandée pour les applications internationales.
Comment valider qu'un timestamp est valide ?
Un timestamp valide est un entier positif représentant une date réaliste. En JavaScript : const isValid = Number.isInteger(ts) && ts > 0 && new Date(ts * 1000).getTime() > 0. Vérifiez aussi que la date résultante est dans une plage attendue (ex: entre 2000 et 2100 pour une application métier).
Timestamp en millisecondes ou microsecondes ?
JavaScript utilise les millisecondes (ms). Python et PHP permettent les microsecondes via time.time() (float) ou microtime(true). Pour la plupart des applications web, les millisecondes suffisent. Les microsecondes sont utiles pour le profiling de performance ou les systèmes de trading.