Comparaison des Horodatages par Langage de Programmation
Référence rapide pour les opérations d'horodatage dans les langages de programmation populaires.
Horodatage Actuel
| Langage | Secondes | Millisecondes | Microsecondes |
|---|---|---|---|
| JavaScript | Math.floor(Date.now() / 1000) | Date.now() | performance.now() |
| Python | int(time.time()) | int(time.time() * 1000) | time.time_ns() // 1000 |
| Java | System.currentTimeMillis() / 1000 | System.currentTimeMillis() | Instant.now().getEpochSecond() |
| Go | time.Now().Unix() | time.Now().UnixMilli() | time.Now().UnixMicro() |
| PHP | time() | microtime(true) * 1000 | microtime(true) * 1000000 |
| Ruby | Time.now.to_i | Time.now.to_f * 1000 | Time.now.to_r |
| C# | DateTimeOffset.UtcNow.ToUnixTimeSeconds() | DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() | - |
| Swift | Date().timeIntervalSince1970 | Int(Date().timeIntervalSince1970 * 1000) | - |
Timestamp vers Date
| Langage | Code |
|---|---|
| JavaScript | new Date(timestamp * 1000) |
| Python | datetime.fromtimestamp(timestamp) |
| Java | Instant.ofEpochSecond(timestamp) |
| Go | time.Unix(timestamp, 0) |
| PHP | date('Y-m-d H:i:s', $timestamp) |
| Ruby | Time.at(timestamp) |
| C# | DateTimeOffset.FromUnixTimeSeconds(timestamp) |
| Swift | Date(timeIntervalSince1970: TimeInterval(timestamp)) |
Date vers Timestamp
| Langage | Code |
|---|---|
| JavaScript | Math.floor(date.getTime() / 1000) |
| Python | int(date.timestamp()) |
| Java | date.toEpochSecond(ZoneOffset.UTC) |
| Go | date.Unix() |
| PHP | strtotime('2024-01-01') |
| Ruby | date.to_i |
| C# | ((DateTimeOffset)date).ToUnixTimeSeconds() |
| Swift | Int(date.timeIntervalSince1970) |
Formatage
| Langage | Code |
|---|---|
| JavaScript | date.toISOString() ou date.toLocaleString() |
| Python | date.strftime('%Y-%m-%d %H:%M:%S') |
| Java | DateTimeFormatter.ISO_DATE_TIME.format(date) |
| Go | date.Format(time.RFC3339) |
| PHP | date('Y-m-d H:i:s', $timestamp) |
| Ruby | date.strftime('%Y-%m-%d %H:%M:%S') |
| C# | date.ToString("yyyy-MM-dd HH:mm:ss") |
| Swift | dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" |
Gestion des Fuseaux Horaires
| Langage | UTC | Local | Convertir |
|---|---|---|---|
| JavaScript | new Date().toISOString() | new Date().toLocaleString() | date.toLocaleString('en-US', {timeZone: 'UTC'}) |
| Python | datetime.utcnow() | datetime.now() | date.astimezone(timezone('UTC')) |
| Java | Instant.now() | LocalDateTime.now() | date.atZone(ZoneId.of("UTC")) |
| Go | time.Now().UTC() | time.Now() | date.In(time.UTC) |
| PHP | gmdate() | date() | date_default_timezone_set('UTC') |
| Ruby | Time.now.utc | Time.now | Time.now.getutc |
| C# | DateTime.UtcNow | DateTime.Now | TimeZoneInfo.ConvertTimeToUtc(date) |
| Swift | Date() (toujours UTC en interne) | Date() | Calendar.current.dateComponents |
Différences Clés
Début de l'Époque
- Tous les langages utilisent l'époque Unix : 1er janvier 1970 00:00:00 UTC
- Exception : temps GPS utilise le 6 janvier 1980
- TAI utilise le 1er janvier 1958
Précision
- Secondes : Plus courant, 10 chiffres (jusqu'en 2286)
- Millisecondes : 13 chiffres, par défaut en JavaScript
- Microsecondes : 16 chiffres
- Nanosecondes : 19 chiffres, certains systèmes
Stockage du Fuseau Horaire
- JavaScript : Pas de fuseau horaire dans l'objet Date, utilise le fuseau du navigateur
- Python : Objets datetime Naive vs Aware
- Java : Instant (UTC) vs ZonedDateTime (avec zone)
- Go : Location attachée à l'objet Time
- Ruby : L'objet Time inclut le décalage du fuseau horaire
- C# : DateTimeKind (Unspecified, Utc, Local)
- Swift : Date est toujours UTC, Calendar gère les zones
Meilleures Pratiques
- Stockez toujours en UTC dans les bases de données
- Convertissez en heure locale uniquement pour l'affichage
- Utilisez ISO 8601 pour la sérialisation API
- Gérez les secondes intercalaires avec soin (GPS/TAI vs UTC)
- Considérez la précision nécessaire pour votre cas d'utilisation