Ressources d'horodatage

Comparaison des Horodatages par Langage de Programmation

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

LangageSecondesMillisecondesMicrosecondes
JavaScriptMath.floor(Date.now() / 1000)Date.now()performance.now()
Pythonint(time.time())int(time.time() * 1000)time.time_ns() // 1000
JavaSystem.currentTimeMillis() / 1000System.currentTimeMillis()Instant.now().getEpochSecond()
Gotime.Now().Unix()time.Now().UnixMilli()time.Now().UnixMicro()
PHPtime()microtime(true) * 1000microtime(true) * 1000000
RubyTime.now.to_iTime.now.to_f * 1000Time.now.to_r
C#DateTimeOffset.UtcNow.ToUnixTimeSeconds()DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()-
SwiftDate().timeIntervalSince1970Int(Date().timeIntervalSince1970 * 1000)-

Timestamp vers Date

LangageCode
JavaScriptnew Date(timestamp * 1000)
Pythondatetime.fromtimestamp(timestamp)
JavaInstant.ofEpochSecond(timestamp)
Gotime.Unix(timestamp, 0)
PHPdate('Y-m-d H:i:s', $timestamp)
RubyTime.at(timestamp)
C#DateTimeOffset.FromUnixTimeSeconds(timestamp)
SwiftDate(timeIntervalSince1970: TimeInterval(timestamp))

Date vers Timestamp

LangageCode
JavaScriptMath.floor(date.getTime() / 1000)
Pythonint(date.timestamp())
Javadate.toEpochSecond(ZoneOffset.UTC)
Godate.Unix()
PHPstrtotime('2024-01-01')
Rubydate.to_i
C#((DateTimeOffset)date).ToUnixTimeSeconds()
SwiftInt(date.timeIntervalSince1970)

Formatage

LangageCode
JavaScriptdate.toISOString() ou date.toLocaleString()
Pythondate.strftime('%Y-%m-%d %H:%M:%S')
JavaDateTimeFormatter.ISO_DATE_TIME.format(date)
Godate.Format(time.RFC3339)
PHPdate('Y-m-d H:i:s', $timestamp)
Rubydate.strftime('%Y-%m-%d %H:%M:%S')
C#date.ToString("yyyy-MM-dd HH:mm:ss")
SwiftdateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

Gestion des Fuseaux Horaires

LangageUTCLocalConvertir
JavaScriptnew Date().toISOString()new Date().toLocaleString()date.toLocaleString('en-US', {timeZone: 'UTC'})
Pythondatetime.utcnow()datetime.now()date.astimezone(timezone('UTC'))
JavaInstant.now()LocalDateTime.now()date.atZone(ZoneId.of("UTC"))
Gotime.Now().UTC()time.Now()date.In(time.UTC)
PHPgmdate()date()date_default_timezone_set('UTC')
RubyTime.now.utcTime.nowTime.now.getutc
C#DateTime.UtcNowDateTime.NowTimeZoneInfo.ConvertTimeToUtc(date)
SwiftDate() (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

  1. Stockez toujours en UTC dans les bases de données
  2. Convertissez en heure locale uniquement pour l'affichage
  3. Utilisez ISO 8601 pour la sérialisation API
  4. Gérez les secondes intercalaires avec soin (GPS/TAI vs UTC)
  5. Considérez la précision nécessaire pour votre cas d'utilisation

Ressources Connexes