Français

Outils de développement · Convertisseur d'horodatage Unix

Époques microsecondes et nanosecondes : raccourcissement des valeurs de chiffres 16 et 19

· Comment ça marche

horodatages Validation unix-time flux de travail du développeur

Une longue valeur en nanosecondes se rétrécissant de quelques microsecondes à quelques millisecondes.
Illustration vectorielle originale de ToolAcre

Certains environnements d'exécution émettent des époques en microsecondes ou nanosecondes, donnant des valeurs à seize ou dix-neuf chiffres qu'un convertisseur de secondes ou de millisecondes ne peut pas lire directement. Cet article explique d'où ils viennent et comment les raccourcir en toute sécurité.

Un nombre à dix-neuf chiffres dans une trace - time.UnixNano sortie collée dans un convertisseur et le résultat qui n'avait aucun sens

Un champ de trace de dix-neuf chiffres peut représenter une époque d'une nanoseconde, mais le coller directement dans ce convertisseur ne teste pas cette hypothèse. ToolAcre accepte les secondes ou les millisecondes. Son erreur de plage laisse même entendre qu'un numéro de base de données surdimensionné peut utiliser des microsecondes ou des nanosecondes, incitant l'utilisateur à normaliser avant d'interpréter.

Conservez le texte original pendant l'enquête. Le convertir en un nombre JavaScript ordinaire peut déjà modifier les chiffres de poids faible avant qu'une division ne se produise. Le schéma du producteur, l'instruction de journalisation ou la définition des colonnes de la base de données constituent une meilleure preuve que la longueur visuelle, en particulier pour les compteurs qui ne sont pas du tout des époques Unix.

Les quatre résolutions courantes : secondes, millisecondes, microsecondes et nanosecondes, avec leur nombre de chiffres pour les dates actuelles

Les secondes avancent une fois par seconde, les millisecondes mille fois plus vite, les microsecondes un million de fois et les nanosecondes un milliard de fois. Aux dates actuelles, ils apparaissent souvent sous la forme de dix, treize, seize et dix-neuf chiffres décimaux. « Souvent » compte : les signes négatifs, les dates précoces et les plages éloignées enfreignent la règle des chiffres uniquement.

Le seuil automatique du panneau ne distingue que les secondes des millisecondes à la magnitude 10¹¹. Une valeur en microsecondes à seize chiffres dépasse cette limite et serait traitée comme des millisecondes, dépassant généralement la date prévue d'un facteur mille. Sélectionnez une unité uniquement après avoir réduit la résolution non prise en charge à l'un des noms de route.

Quatre étiquettes de résolution sont courantes, mais le nombre de chiffres à lui seul ne constitue pas un contrat de format.

Le plan nomme plusieurs API de langage et produits de stockage, mais aucun n'est un fichier source pour cet outil. Plutôt que de supposer quel producteur a émis un champ, inspectez sa documentation. Un suffixe tel que `_us` ou `_ns`, une précision déclarée ou un événement adjacent connu fournit la preuve que la largeur décimale ne peut pas le faire.

Distinguez également une époque d'une durée monotone. Un compteur haute résolution peut mesurer le temps écoulé depuis le démarrage ou le démarrage du processus et n'avoir aucun rapport avec 1970. La division d'une telle valeur produit un compteur plus petit, pas une date calendaire. Confirmez à la fois l'unité et l'origine avant d'apporter le résultat à un convertisseur d'époque.

Identifiez la résolution du producteur, et non une liste d'émetteurs présumés

Pour réduire les microsecondes en millisecondes, supprimez un facteur de 1,000 ; pendant des nanosecondes, supprimez 1,000,000. La division entière met délibérément de côté une précision inférieure à la milliseconde. Pour une valeur positive, la troncature prend le nombre de millisecondes en tête. Pour les négatifs, choisissez une règle d'arrondi qui correspond au producteur plutôt que de supposer que le découpage des chaînes a une sémantique identique.

Effectuez l'opération avec du texte décimal ou BigInt lorsque la précision compte. La division en virgule flottante peut commencer à partir d'un nombre à dix-neuf chiffres déjà arrondi. Conservez le reste ignoré à côté de l'instant converti si une enquête nécessite un ordre des événements dans un délai d'une milliseconde ; ToolAcre ne peut pas afficher ces distinctions inférieures à la milliseconde.

Exemple concret : 1700000000123456789 — découpage en millisecondes, lecture du résultat et notation des chiffres inférieurs à la milliseconde que vous avez mis de côté

Prenez `1738577696123456789` en nanosecondes. Traitez-le comme un texte décimal, divisez par 1,000,000 avec une arithmétique entière et obtenez 1,738,577,696,123 millisecondes avec un reste de 456,789 nanosecondes. Entrez explicitement le quotient en millisecondes ; sa lecture ISO est `2025-02-03T10:14:56.123Z`.

Le reste n'est pas du bruit : deux événements de trace peuvent partager cette milliseconde affichée tout en différant en dessous. Stockez les valeurs brutes pour la commande et utilisez la sortie réduite uniquement pour l'orientation humaine. Arrondir à 1,738,577,696,124 déplacerait l'instant affiché dans la milliseconde suivante et indiquerait mal la source.

La division des chaînes peut être revue chiffre par chiffre : six décimales supprimées correspondent exactement à l'échelle nanoseconde à milliseconde, tandis que le préfixe intact reste le décompte du calendrier.

Exemple concret : conserver une valeur à 19 chiffres sous forme de texte tout en la réduisant en millisecondes

La garantie d'entier exact de JavaScript se termine bien en dessous des valeurs d'époque typiques à dix-neuf chiffres. L'analyseur de ToolAcre appelle finalement `Number`, donc l'introduction du texte brut en nanosecondes via le panneau ne peut pas conserver chaque chiffre. Sa limite de date et son sélecteur d'unité pris en charge ne transforment pas Number en un conteneur entier nanoseconde.

Utilisez BigInt ou un chemin de prétraitement prenant en compte les chaînes pour la réduction, puis transmettez le résultat en millisecondes de taille sûre. Ce séquençage est important : analyser en premier et diviser en second peut corrompre précisément les chiffres que vous espériez conserver. Un rendu de calendrier réussi ne prouve pas que la valeur source d'ordre inférieur a survécu.

Ce que cela ne couvre pas : la précision de l'horloge, qui n'est pas liée à la résolution : un horodatage nanoseconde peut toujours être erroné de quelques secondes

La résolution vous indique avec quelle précision une représentation peut distinguer les valeurs ; cela ne vous indique pas à quel point l'horloge était proche de l'heure physique. Un champ de nanosecondes peut être dérivé d'une source inexacte, tandis qu'un champ de secondes peut être bien synchronisé. Le convertisseur n'a aucune mesure de qualité d'horloge et ne fait aucune réclamation de ce type.

De même, les chiffres supplémentaires peuvent être complétés avec précision plutôt que comme précision mesurée. Pour l'analyse des incidents, comparez les horloges à l'aide des preuves de synchronisation et comparez l'ordre des événements à l'aide du compteur brut documenté. La conversion du calendrier fournit uniquement de la lisibilité. Ne déduisez pas la précision d’une longue queue décimale ou de trois millisecondes affichées en ISO.

À retenir : réduisez d'abord en millisecondes, puis convertissez - et comment le convertisseur d'horodatage Unix lit la valeur raccourcie avec l'unité indiquée

Réduisez la résolution non prise en charge avant la conversion, conservez l'original et indiquez le reste supprimé. ToolAcre peut alors faire ce que son contrat promet : lire les secondes ou millisecondes résultantes et afficher les formulaires UTC, locaux et ISO avec l'unité sélectionnée visible.

Si la date normalisée n'a toujours aucun sens, revisitez l'origine plutôt que de supprimer des chiffres à plusieurs reprises. Un compteur depuis le démarrage, une autre époque ou un encodage non documenté peuvent tous rester erronés à toutes les échelles. L'unité, l'origine et la précision entière sont des questions distinctes ; répondez aux trois avant de vous fier à une date lisible par l’homme.

Le sélecteur d'unité explicite est important après réduction car la détection automatique n'est qu'une valeur par défaut. Le choix des millisecondes enregistre la décision de prétraitement au lieu de demander à l'heuristique de magnitude de la redécouvrir.