Convertisseur d'heure d'époque Unix et générateur d'horodatage Discord
Convertissez les horodatages d'époque Unix en dates lisibles par l'homme et vice versa. Générez des horodatages Discord copier-coller en temps réel.
Faites glisser la ligne temporelle pour comparer les fuseaux horaires.
La synchronisation des systèmes de bases de données distribuées, la journalisation des événements d'application et le débogage des charges utiles de l'API nécessitent une méthode standardisée et très précise de suivi du temps. La normalisation de l'heure d'époque Unix fournit un entier immuable et indépendant du fuseau horaire qui représente le nombre exact de secondes écoulées depuis le 1er janvier 1970. Ce guide complet détaille les mécanismes des horodatages Unix, démontre les méthodes de conversion programmatique dans les environnements modernes et explique comment analyser des structures temporelles alternatives telles que les identifiants de flocon de neige Discord.
Comprendre la dynamique de l'heure et de l'horodatage Unix
L'heure Unix (également connue sous le nom d'époque Unix, d'heure POSIX ou d'horodatage Unix) suit la progression chronologique sous la forme d'un nombre entier incrémentiel. Il représente le nombre de secondes écoulées depuis le point de référence du 1er janvier 1970, 00:00:00 UTC (représentation ISO 8601 : 1970-01-01T00:00:00Z). A l'instant précis de cette époque, le compteur se situait exactement à 0.
Les horodatages d’époque sont strictement indépendants du fuseau horaire. L'entier représente un instant universel singulier à travers le monde, et les applications clientes locales ajustent la couche de présentation en appliquant des décalages UTC spécifiques. Pour voir comment fonctionne le mappage de fuseau horaire, comparez les interprétations locales de l'horodatage 1577923200 :
| Région du fuseau horaire | Date et heure localisées | Valeur de décalage |
|---|---|---|
| GMT/UTC | Jeudi 2 janvier 2020, 00:00:00 | UTC+00:00 |
| Inde (Calcutta) | Jeudi 2 janvier 2020, 05:30:00 | UTC+05:30 |
| Amérique (New York) | Mercredi 1 janvier 2020, 19:00:00 | UTC-05:00 |
L'heure Unix ne tient pas compte des secondes intercalaires. Au lieu de cela, il suppose que chaque jour calendaire contient exactement 86 400 secondes. Étant donné que les secondes intercalaires sont ignorées dans le compteur (partageant exactement la même valeur d'horodatage que la seconde précédente), l'heure d'époque Unix ne maintient pas une synchronisation parfaite et linéaire avec le temps universel coordonné (UTC) sur de longues périodes géologiques. Pour les dates précédant le seuil de départ du 1er janvier 1970, le système utilise des valeurs entières négatives (par exemple, -86400 indique le 31 décembre 1969, 00:00:00 UTC).
Pour travailler avec ces chiffres dans la modélisation de bases de données ou dans les tâches de travail en arrière-plan, les développeurs s'appuient sur des intervalles chronologiques fixes. La liste suivante mappe les unités standard à leurs valeurs exactes en secondes :
- 1 heure : 3 600 secondes
- 1 jour : 86 400 secondes
- 1 semaine : 604 800 secondes
- 1 mois (calculé sur 30,44 jours) : 2 629 743 secondes
- 1 an (calculé sur 365,24 jours) : 31 556 926 secondes
Le calcul des valeurs de durée directement avec ces valeurs facilite la gestion des planifications cron, l'expiration des jetons JWT ou la création d'index TTL personnalisés dans les bases de données NoSQL.
Secondes contre millisecondes : navigation dans la précision des chiffres
Les horodatages dans les logiciels modernes s'exécutent à différents niveaux de précision en fonction des exigences de l'application. La plupart des conceptions de systèmes utilisent l'une de ces quatre résolutions :
- Secondes (format à 10 chiffres) : Par exemple,
1735689600. Il s'agit de la résolution standard utilisée par Python, PHP, les bases de données relationnelles (comme PostgreSQL et MySQL) et les environnements shell Linux. - Millisecondes (format à 13 chiffres) : Par exemple,
1735689600000. Ce format est standard dans JavaScript, Java et la majorité des API Web modernes basées sur JSON. - Microsecondes (format à 16 chiffres) : Par exemple,
1735689600000000. Généralement réservé aux plates-formes de traçage de haute précision, de journalisation système et de diagnostic de bas niveau. - Nanosecondes (format à 19 chiffres) : Utilisé dans les systèmes de trace spécialisés au niveau du noyau et les réseaux de traitement en temps réel.
Pour convertir des secondes en millisecondes, multipliez la valeur entière par 1 000. À l’inverse, pour reconvertir les millisecondes en secondes standard, appliquez une division entière par 1 000 pour supprimer les chiffres de fin.
Comprendre les horodatages Unix marquants et séquentiels fournit une perspective claire sur la progression chronologique et l'échelle :
| Horodatage Unix | Date et heure UTC équivalentes | Contexte des jalons |
|---|---|---|
| 0 | Jeudi 1er janvier 1970, 00:00:00 UTC | L'époque Unix |
| 1 000 000 000 | Dimanche 9 septembre 2001, 01:46:40 UTC | Le jalon du milliardième seconde |
| 1 234 567 890 | Vendredi 13 février 2009, 23:31:30 UTC | Progression séquentielle des chiffres décimaux |
| 1 735 689 600 | Mercredi 1 janvier 2025, 00:00:00 UTC | Début de l'année 2025 |
| 2 000 000 000 | Mardi 18 mai 2033, 03:33:20 UTC | Deux milliardième deuxième étape |
| 2 147 483 647 | Mardi 19 janvier 2038, 03:14:07 UTC | La limite maximale absolue signée de 32 bits |
Le problème de l’an 2038 : pourquoi les systèmes 32 bits échouent
Les systèmes existants, les micrologiciels intégrés et les schémas de base de données stockant les horodatages Unix sous forme d'entiers 32 bits signés finiront par rencontrer une limite de dépassement. Un entier signé de 32 bits ne peut stocker que des valeurs allant jusqu'à 2 147 483 647. Le point de rupture exact se produit le 19 janvier 2038 à 03:14:07 UTC.
Au prochain tick de l'horloge système (03:14:08 UTC), le compteur entier déborde et revient à sa limite négative minimale de -2,147,483,648. Les systèmes qui ne parviennent pas à gérer cette transition interpréteront la date comme étant le 13 décembre 1901. Cela déclenchera des pannes du système, des invalidations de certificats, des erreurs du système de fichiers et des requêtes de base de données corrompues.
Méthodes programmatiques pour convertir et générer des horodatages Unix
Pour aider les développeurs à capturer l'heure actuelle et à effectuer des conversions, le tableau ci-dessous présente les méthodes permettant de récupérer les horodatages d'époque standard et de convertir une valeur générique (en utilisant 1800000000 comme référence) en heures locales dans différentes langues et plates-formes.
| Langue / Plateforme | Époque actuelle (secondes) | Convertir l'époque en date |
|---|---|---|
| Javascript | Math.floor(Date.now() / 1000) | nouvelle Date(1800000000 * 1000).toLocaleString() |
| Python | int(heure.heure()) | heure.ctime(1800000000) |
| Java | Instant.now().getEpochSecond() | new SimpleDateFormat("MM/jj/aaaa HH:mm:ss").format(nouvelle Date(1800000000L * 1000)) |
| Aller | temps.Maintenant().Unix() | temps.Unix (1800000000, 0) |
| PHP | temps() | date('r', 1800000000) |
| Rubis | Il est temps.maintenant.to_i | Heure.à(1800000000) |
| C# | DateTimeOffset.Now.ToUnixTimeSeconds() | DateTimeOffset.FromUnixTimeSeconds(1800000000).LocalDateTime |
| C++ | durée_cast |
— |
| Rouiller | SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs() | — |
| Perl | temps | heure locale scalaire (1800000000) |
| PostgreSQL | SELECT EXTRACT(EPOCH FROM now()); | SELECT TO_TIMESTAMP(1800000000); |
| MySQL | SELECT UNIX_TIMESTAMP(MAINTENANT()); | SELECT FROM_UNIXTIME(1800000000); |
| Serveur SQL | SELECT DATEDIFF(SECOND, '1970-01-01', GETUTCDATE()); | SELECT DATEADD(SECOND, 1800000000, '1970-01-01'); |
| SQLite | SELECT unixepoch(); | SELECT datetime(1800000000, 'unixepoch'); |
| Shell Unix/Linux | date +%s | date -ud @1800000000 |
| macOS | date +%s | date -j -r 1800000000 |
| PowerShell | [DateTimeOffset] ::Now.ToUnixTimeSeconds() | [DateTimeOffset] ::FromUnixTimeSeconds (1800000000).LocalDateTime |
| Excel / Feuilles | — | =(A1 / 86400) + 25569 |
Époques personnalisées et générateurs d'horodatage de flocon de neige Discord
Différentes architectures utilisent des époques de référence spécialisées et des résolutions incrémentales en fonction des plates-formes matérielles, des bases de données ou des spécifications des applications. Certains de ces formats incluent :
- Horodatage LDAP : compte par blocs de 100 nanosecondes à partir du 1er janvier 1601.
- .NET DateTime Ticks : Compte par blocs de 100 nanosecondes à partir de l'année grégorienne 1.
- Horodatage Chrome/WebKit : Compte en microsecondes à partir du 1er janvier 1601.
- Mac HFS+ : Compte en secondes à partir du 1er janvier 1904.
- NTP Timestamp : Compte en secondes à partir du 1er janvier 1900.
- Temps GPS : Compte en secondes et en semaines à partir du 6 janvier 1980.
- Horodatage SAS : Compte en secondes ou en jours à partir du 1er janvier 1960.
- Cocoa Core Data : Compte en secondes à partir du 1er janvier 2001.
- Excel OADate : Compte en jours fractionnaires à partir du 1er janvier 1900.
- FAT Timestamp : Compte en secondes à partir de 1980 ou 2000.
- Jour julien : Mesure la progression chronologique en jours à partir d'anciens points de référence astronomiques.
- Snowflake ID : Un format d'indexation d'horodatage décentralisé utilisé par Discord et Twitter (X).
Comprendre les horodatages Discord et les identifiants de flocon de neige
Discord génère des entiers non signés 64 bits uniques et décentralisés (identifiants de flocon de neige) pour identifier des objets tels que des messages, des canaux, des serveurs et des utilisateurs. Contrairement aux entiers incrémentiels standard ou aux UUID à surcharge élevée, un flocon de neige Discord intègre l'heure de création exacte dans l'ID lui-même, ce qui améliore les performances dans les systèmes distribués.
La structure d'un identifiant de flocon de neige Discord est divisée en quatre composants distincts :
- Horodatage (42 bits) : Représente les millisecondes écoulées depuis l'époque Discord personnalisée (définie sur le 1er janvier 2015 à 00:00:00 UTC, équivalent à l'horodatage Unix
1420070400000). - ID de travailleur (5 bits) : Représente l'index de travail du serveur interne.
- ID de processus (5 bits) : Représente l'index de processus interne.
- Incrément (12 bits) : Un compteur séquentiel qui se réinitialise à 0 toutes les millisecondes par processus.
Pour afficher des dates lisibles dans les messages Discord qui s'ajustent automatiquement au fuseau horaire local de l'utilisateur qui consulte, les développeurs utilisent des générateurs d'horodatage Discord. La saisie d'un horodatage Unix standard dans ces générateurs produit une chaîne de démarque formatée. Le tableau ci-dessous répertorie les formats de style disponibles :
| Syntaxe de démarque | Exemple de sortie (pour Unix 1735689600) |
Description du style d'affichage |
|---|---|---|
<t:1735689600:t> |
00:00 | Peu de temps |
<t:1735689600:T> |
00:00:00 | Longue durée |
<t:1735689600:d> |
01/01/2025 | Date courte |
<t:1735689600:D> |
1 janvier 2025 | Date longue |
<t:1735689600:f> |
1 janvier 2025 00:00 | Date/heure courte |
<t:1735689600:F> |
mercredi 1 janvier 2025 00:00 | Date/heure longue |
<t:1735689600:R> |
dans 5 ans / il y a 5 ans | Temps relatif |
Optimisation des flux de travail temporels dans les systèmes distribués
La gestion des calculs de temps au sein de systèmes distribués modernes nécessite une approche standardisée pour éviter les dérives de fuseau horaire, les bogues de dimensionnement de la charge utile et les plantages par débordement. La normalisation des structures de bases de données à l'époque Unix standard simplifie les tâches de manipulation du temps, garantissant des opérations cohérentes sur les microservices et les interfaces externes.
Lors de la conception d'API ou de la configuration de files d'attente de messages, gardez ces trois directives à l'esprit :
- Stockez l'heure au format UTC ou entier d'époque : Gardez les couches de persistance propres des décalages de fuseau horaire local. Appliquez les localisations exclusivement au niveau de la couche de présentation.
- Donner la priorité à la représentation 64 bits : Lors de la conception de colonnes de base de données ou de la sélection de structures de programmation, éloignez-vous des types 32 bits pour éviter les débordements d'exécution de l'année 2038.
- Choisissez la précision appropriée : Faites correspondre les spécifications du système (par exemple, en utilisant des millisecondes pour les événements d'API et des nanosecondes uniquement lors du suivi des acquisitions de verrous distribués).
Lors de la conversion d'horodatages ou de la vérification d'époques à l'aide des utilitaires de navigateur, la sécurité et la confidentialité sont primordiales. L'outil de conversion de Toolsaur implémente directement cette philosophie : "Tous les traitements s'exécutent localement dans votre navigateur. Vos données ne sont jamais envoyées à nos serveurs." Cela garantit que les journaux système sensibles contenant des horodatages de base de données ne seront jamais divulgués vers des points de terminaison tiers.
Questions fréquemment posées sur les convertisseurs d'époque
Pourquoi les horodatages Unix sont-ils indépendants du fuseau horaire ?
Les horodatages Unix représentent le temps absolu écoulé depuis un seul point de référence global (1er janvier 1970, à 00:00:00 UTC). Étant donné que ce point de départ de référence est identique quel que soit l’emplacement géographique, l’entier d’horodatage calculé reste le même. L'ajustement du fuseau horaire local n'est appliqué que lors du formatage de l'horodatage en une chaîne de date lisible par l'homme dans les interfaces client.
Quelle est la différence entre un horodatage à 10 chiffres et à 13 chiffres ?
Un horodatage à 10 chiffres représente la précision en secondes (par exemple, 1735689600), ce qui est typique des systèmes d'exploitation POSIX, de Python et des bases de données SQL. Un horodatage à 13 chiffres représente la précision en millisecondes (par exemple, 1735689600000), ce qui est standard pour les environnements d'exécution JavaScript, Java et les API REST modernes. Se déplacer entre eux nécessite de multiplier ou de diviser par 1 000.
Comment le problème de l’an 2038 affectera-t-il les bases de données modernes ?
Si une colonne de base de données stocke les horodatages Unix à l'aide d'un type de données entier signé de 32 bits (tel que INT dans les anciens schémas de base de données), tout enregistrement avec un horodatage au-delà du 19 janvier 2038, 03:14:07 UTC provoquera un débordement. Cela enveloppe le nombre à une valeur négative, interprétant les dates futures comme le 13 décembre 1901. Les systèmes doivent migrer ces colonnes vers des entiers signés de 64 bits (BIGINT).
Comment le temps Unix gère-t-il les secondes intercalaires ?
L'heure Unix ne tient pas compte des secondes intercalaires et suppose que chaque jour compte exactement 86 400 secondes. Lorsqu'une seconde intercalaire se produit, l'horodatage Unix est répété ou arrêté pendant une seconde. Ce choix de conception simplifie les calculs mathématiques mais entraîne des dérives mineures par rapport aux délais exacts du temps universel coordonné (UTC).
Qu'est-ce qu'un identifiant de flocon de neige Discord et en quoi diffère-t-il d'un horodatage Unix standard ?
Un identifiant de flocon de neige Discord est un entier non signé personnalisé de 64 bits qui code un horodatage de création ainsi que des métadonnées d'architecture de serveur (ID de travailleur, ID de processus et un incrément local). Contrairement à un horodatage Unix standard à 10 chiffres en secondes, un identifiant de flocon de neige utilise une époque personnalisée commençant le 1er janvier 2015 et suit les intervalles en millisecondes, stockant cette heure de haute précision dans les 42 premiers bits de l'identifiant.
Comment convertir un horodatage d’époque dans Microsoft Excel ?
Excel suit les dates en fonction du nombre de jours écoulés depuis le 1er janvier 1900. Pour convertir un horodatage Unix standard à 10 chiffres (secondes) dans la cellule A1 en une date lisible dans Excel, appliquez la formule =(A1 / 86400) + 25569, où 86400 est le nombre de secondes dans une journée et 25569 est le décalage en jours entre l'époque d'Excel et l'époque Unix. Définissez le formatage de la cellule sur "Date" ou "Heure" pour afficher la sortie.