Vous cherchez à convertir un timestamp Unix en date en ligne ou à convertir une date en timestamp Unix ? Les timestamps Unix sont omniprésents en développement : bases de données, APIs, logs, systèmes de fichiers… Pourtant, ils restent souvent mal compris, source de bugs subtils liés aux fuseaux horaires.
Que représente 1735689600 ? Sans outil, impossible de le savoir. Et les erreurs de conversion de timezone peuvent causer des problèmes critiques : événements décalés, données corrompues, ou pire, transactions financières erronées.
Notre convertisseur de timestamp est un outil epoch en ligne gratuit qui vous permet de convertir instantanément entre timestamps et dates lisibles. Dans cet article, maîtrisez les timestamps Unix une fois pour toutes et évitez les pièges courants.
Qu’est-ce qu’un timestamp Unix ?
Un timestamp Unix représente un instant précis dans le temps sous forme d’un nombre unique : le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC.
Cette date de référence est appelée l’Epoch Unix ou Epoch POSIX.
Exemples concrets
| Timestamp | Date correspondante |
|---|---|
| 0 | 1er janvier 1970 00:00:00 UTC |
| 1000000000 | 9 septembre 2001 01:46:40 UTC |
| 1609459200 | 1er janvier 2021 00:00:00 UTC |
| 1735689600 | 1er janvier 2025 00:00:00 UTC |
Testez avec notre convertisseur de timestamp !
Pourquoi utiliser des timestamps ?
1. Universalité
Un timestamp est indépendant du fuseau horaire. Le timestamp 1609459200 représente le même instant partout dans le monde, que vous soyez à Paris, New York ou Tokyo.
2. Simplicité de stockage
Un simple entier est plus léger et plus rapide à traiter qu’une chaîne de date formatée :
// Compact et efficace
1609459200
// Plus lourd
"2021-01-01T00:00:00.000Z"
3. Calculs facilités
Les opérations temporelles deviennent de simples additions/soustractions :
const maintenant = Math.floor(Date.now() / 1000);
const dansTroisJours = maintenant + (3 * 24 * 60 * 60);
const ilYaUneHeure = maintenant - 3600;
4. Tri naturel
Les timestamps se trient naturellement par ordre chronologique :
events.sort((a, b) => a.timestamp - b.timestamp);
5. Comparaisons simples
if (expirationTimestamp < Date.now() / 1000) {
console.log("Le token a expiré");
}
Secondes vs Millisecondes
Le piège classique
La différence de précision entre secondes et millisecondes est source de nombreux bugs.
| Format | Longueur | Valeur exemple |
|---|---|---|
| Secondes (Unix) | 10 chiffres | 1735689600 |
| Millisecondes (JS) | 13 chiffres | 1735689600000 |
JavaScript utilise les millisecondes
// Date.now() retourne des millisecondes
Date.now(); // 1735689600000
// new Date() attend des millisecondes
new Date(1735689600000); // ✅ Correct
new Date(1735689600); // ❌ 18 janvier 1970 !
Conversion entre formats
// Secondes → Millisecondes
const ms = timestamp * 1000;
// Millisecondes → Secondes
const sec = Math.floor(Date.now() / 1000);
Notre convertisseur de timestamp détecte automatiquement le format d’entrée.
Conversions pratiques
JavaScript
// Timestamp actuel (secondes)
const now = Math.floor(Date.now() / 1000);
// Date → Timestamp
const timestamp = Math.floor(new Date("2025-01-01").getTime() / 1000);
// Timestamp → Date
const date = new Date(timestamp * 1000);
// Formatage lisible
date.toISOString(); // "2025-01-01T00:00:00.000Z"
date.toLocaleDateString('fr-FR'); // "01/01/2025"
Python
import time
from datetime import datetime
# Timestamp actuel
now = int(time.time())
# Date → Timestamp
dt = datetime(2025, 1, 1)
timestamp = int(dt.timestamp())
# Timestamp → Date
date = datetime.fromtimestamp(timestamp)
# Formatage
date.strftime("%d/%m/%Y %H:%M:%S") # "01/01/2025 00:00:00"
PHP
// Timestamp actuel
$now = time();
// Date → Timestamp
$timestamp = strtotime("2025-01-01");
// Timestamp → Date
$date = date("d/m/Y H:i:s", $timestamp);
// Avec DateTime
$dt = new DateTime("@$timestamp");
SQL
-- MySQL
SELECT UNIX_TIMESTAMP(NOW());
SELECT FROM_UNIXTIME(1735689600);
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW());
SELECT TO_TIMESTAMP(1735689600);
-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1735689600, 'unixepoch');
Le problème de l’an 2038
La limite des systèmes 32 bits
Les entiers signés 32 bits peuvent stocker des valeurs jusqu’à 2 147 483 647. Ce maximum sera atteint le 19 janvier 2038 à 03:14:07 UTC.
Après cette date, sur les systèmes non mis à jour, le timestamp “déborde” et devient négatif, ramenant la date à… 1901.
Solutions modernes
| Solution | Description |
|---|---|
| Entiers 64 bits | Limite repoussée à 292 milliards d’années |
| Timestamps millisecondes | 64 bits par défaut en JavaScript |
| Bibliothèques modernes | Luxon, Day.js, date-fns utilisent des formats sûrs |
Les systèmes modernes (Linux 64 bits, Windows 64 bits, macOS) sont généralement préparés.
Fuseaux horaires et pièges courants
Le timestamp est TOUJOURS en UTC
C’est le point le plus important à retenir. Un timestamp n’a pas de fuseau horaire – il représente un instant absolu.
Piège 1 : Création de date sans timezone
// ⚠️ Interprété en heure locale du navigateur/serveur
new Date("2025-01-01") // Peut donner le 31 décembre 2024 23:00 UTC !
// ✅ Spécifier explicitement UTC
new Date("2025-01-01T00:00:00Z")
Piège 2 : Comparaison de dates entre fuseaux
// Un utilisateur à Paris et un à New York voient "01/01/2025"
// Mais leurs timestamps locaux sont différents !
// ✅ Stocker et comparer toujours en UTC
const startOfDay = new Date("2025-01-01T00:00:00Z").getTime() / 1000;
Piège 3 : Heure d’été (DST)
Lors des changements d’heure, certaines heures locales n’existent pas ou existent deux fois :
// Le 26 mars 2025, passage à l'heure d'été en France
// 02:30 devient 03:30 → 02:30 n'existe pas !
Solution : Stockez et manipulez toujours en UTC. Convertissez uniquement pour l’affichage.
Timestamps dans les APIs
Bonnes pratiques
- Documentez le format : Secondes ou millisecondes ?
- Utilisez ISO 8601 pour la lisibilité :
2025-01-01T12:00:00Z - Supportez les deux : Acceptez timestamps et dates ISO en entrée
- Retournez UTC : Pas de fuseau horaire spécifique
Exemple de réponse API
{
"created_at": 1735689600,
"created_at_iso": "2025-01-01T00:00:00Z",
"timezone": "UTC"
}
Timestamps et bases de données
Types recommandés
| Base de données | Type recommandé |
|---|---|
| PostgreSQL | TIMESTAMPTZ (timestamp with time zone) |
| MySQL | DATETIME ou TIMESTAMP |
| SQLite | INTEGER (timestamp Unix) ou TEXT (ISO 8601) |
| MongoDB | Date (stocké en millisecondes) |
Exemple PostgreSQL
CREATE TABLE events (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
event_time TIMESTAMPTZ DEFAULT NOW()
);
-- Requête par période
SELECT * FROM events
WHERE event_time BETWEEN
TO_TIMESTAMP(1735689600) AND
TO_TIMESTAMP(1735776000);
Debugging des timestamps
Reconnaître le format
| Nombre de chiffres | Format probable |
|---|---|
| 10 | Secondes Unix |
| 13 | Millisecondes JavaScript |
| 16 | Microsecondes |
| 19 | Nanosecondes |
Vérification rapide
Notre convertisseur de timestamp :
- Détecte automatiquement le format
- Affiche la date dans plusieurs fuseaux horaires
- Permet la conversion dans les deux sens
Outils complémentaires
Pour travailler efficacement avec les dates et le temps :
- Convertisseur de timestamp : Conversion bidirectionnelle timestamp ↔ date
- Compteur de jours : Calculez le nombre de jours entre deux dates
- Formateur JSON : Visualisez vos données JSON contenant des timestamps
- Générateur UUID : Les UUID v1 et v7 incluent un timestamp !
Conclusion
Les timestamps Unix sont simples en apparence mais truffés de subtilités. Les points clés à retenir :
- UTC uniquement : Le timestamp n’a pas de fuseau horaire
- Attention aux millisecondes : 10 ou 13 chiffres, ça change tout
- Convertissez à l’affichage : Stockez en UTC, affichez en local
- Préparez-vous à 2038 : Utilisez des entiers 64 bits
Besoin de convertir un timestamp rapidement ? Notre convertisseur de timestamp est là pour vous aider !