Strumenti per sviluppatori · Convertitore di timestamp Unix
UTC, GMT e TAI: quale sta effettivamente contando il tuo timestamp
· Sfondo
timestamp tempo Unix fusi orari
GMT, UTC e TAI sono spesso trattati come sinonimi, ma sono tre cose diverse con storie diverse. Questo post spiega ciascuno di essi e quali di essi seguono effettivamente i convertitori di tempo e di tutti i giorni Unix.
Tre nomi su un server: GMT nell'intestazione Date, UTC nei log e TAI in un documento di ricerca, tutti per lo stesso secondo
Un server può mostrare "GMT" in un protocollo, "UTC" nei log e un'altra scala temporale nei dati scientifici. Etichette di orologi simili non garantiscono l'intercambiabilità. Il primo compito è identificare il contratto dietro ogni campo anziché rinominare tutto UTC in un livello di presentazione.
Il contratto di ToolAcre è esplicito: i secondi o i millisecondi Unix diventano una stringa ISO 8601 UTC, una riga UTC leggibile e una riga locale del browser. Non ha un selettore di scala. Qualsiasi conteggio non Unix deve essere trasformato utilizzando la propria definizione autorevole prima che questo percorso diventi rilevante.
Un utile inventario registra la scala e la serializzazione accanto a ogni campo. Etichette simili non dovrebbero cancellare la provenienza, in particolare quando i dati attraversano sistemi scientifici e applicativi.
Ora solare di Greenwich: ora solare media su un meridiano, la sua storia come riferimento mondiale e perché ora è un fuso orario piuttosto che uno standard
Lo schema offriva una storia del tempo medio di Greenwich e dell'uso legale moderno. Questi fatti non sono presenti nella configurazione, nella sorgente o nei test del convertitore. Questo articolo quindi non trasforma un repository di codice in una citazione storica per inferenza.
Operativamente, se un input dice GMT, ispezionare il protocollo di definizione. Un'etichetta di orologio che sembra equivalente alle date di applicazione ordinarie può comunque contenere requisiti grammaticali o di policy specifici. ToolAcre restituisce etichette UTC e non deve essere presentato come parser o formattatore GMT.
Se l'interoperabilità dipende dal termine, collegare la specifica di controllo nella revisione del codice. Un'etichetta visualizzata non dovrebbe mai sostituire silenziosamente un requisito di formato wire.
La storia e lo stato legale di GMT non sono presenti nelle prove del repository
La riga UTC è generata da `Intl.DateTimeFormat` con `timeZone: "UTC"`; la riga ISO proviene da `toISOString()`. Queste chiamate dimostrano come questa interfaccia etichetta la sua lettura universale. Non documentano quando è stato adottato UTC o il meccanismo istituzionale dietro di esso.
Per il debug, l'etichetta è sufficiente per stabilire un riferimento condiviso indipendente dalla zona locale corrente. Confronta stringhe ISO o valori epoch tra i sistemi. Se una fonte utilizza un'altra scala, provare prima la relazione anziché presumere che una data familiare significhi un conteggio identico.
L'output canonico UTC è particolarmente utile per confrontare gli ambienti perché rimuove la selezione della zona locale. Tuttavia, non converte un input da una scala temporale non dichiarata.
Il convertitore etichetta UTC ma non documenta la cronologia della definizione di UTC
Il tempo atomico internazionale non è rappresentato nel codice, nella configurazione o nei test. Qui non viene visualizzato alcun offset attuale, divario storico o algoritmo di conversione. Fornire una tale costante dalla memoria sarebbe esattamente il tipo di sottile rivendicazione del tempo che il compito vieta.
Conserva un valore etichettato con TAI come TAI finché una libreria o una fonte autorevole non esegue la conversione per la sua data. Incollarlo direttamente poiché Unix secondi applica silenziosamente l'origine o la scala sbagliata e può comunque produrre una stringa ISO lucidata. La leggibilità non è validazione.
Una conversione esterna dovrebbe includere il nome della scala nei nomi delle variabili e dei tipi. Cancellare quell'etichetta prima dell'aritmetica rende impossibile controllare un successivo risultato plausibile ISO.
TAI non è implementato, quindi non viene affermato alcun intervallo o costante di conversione
Il modello Unix testato avanza dal valore epoca 1,483,228,799 alle `2016-12-31T23:59:59Z` a 1,483,228,800 a mezzanotte. Non ha input distinto per `23:59:60`. Questo è il significato concreto del comportamento in stile POSIX in questa implementazione.
È ragionevole dire che il convertitore mappa i conteggi Unix sull'output civile etichettato con UTC secondo tale regola. Sarebbe fuorviante definire l’intero il conteggio esatto dei secondi atomici in ogni salto storico. Lo strumento crea una data software, non una misurazione su scala temporale di laboratorio.
La distinzione è sottile ma pratica: i calcoli delle sequenze ereditano la convenzione Unix, mentre la visualizzazione civile eredita la formattazione Date e Intl. Nessuno dei due percorsi espone metadati del tempo atomico.
Il modello Unix testato mappa i secondi in stile POSIX nelle etichette UTC senza un valore del secondo intercalare
Gli esempi di HTTP e l'ora legale britannica contenuti nel libro di esercizi richiedono un protocollo esterno e fonti legali. Sono omessi. Quando si implementa un'intestazione o un record regolamentato, seguire le specifiche effettive anziché scegliere la dicitura UTC o GMT basata sull'equivalenza colloquiale.
All'interno di questo modulo, `GMT` può apparire come parte del rendering short-offset di Intl per l'offset zero, ma questo è l'output del formattatore, non una promessa di generare una data di protocollo. Mantieni la visualizzazione dell'interfaccia utente separata dalla serializzazione in formato wire-format e dalla terminologia legale.
Un formattatore che restituisce un'etichetta con offset zero non è una convalida del protocollo sufficiente. Testa l'intera intestazione serializzata o il record regolamentato con il parser e le apparecchiature dedicati.
Il protocollo e gli usi legali di GMT richiedono fonti esterne e vengono omessi
Le scale dell'ora e della data astronomica GPS non rientrano nelle modalità accettate. L'interfaccia utente offre solo secondi, millisecondi o rilevamento automatico ed entrambe le unità supportate presuppongono l'epoca Unix. Non esiste alcuna casella di controllo che modifichi l'origine o la convenzione del salto.
Un numero di un'altra scala dovrebbe portare un'etichetta durante l'ingestione e la conservazione. Converti con un metodo di provenienza appositamente creato e conserva l'originale. Solo il valore Unix derivato appartiene a questo pannello; altrimenti un risultato plausibile può nascondere un disallineamento fondamentale.
Rifiutare una scala non supportata è più sicuro che offrire una costante indovinata. Gli offset della scala temporale possono essere sensibili alla data e la falsa precisione in questo caso può riordinare le osservazioni scientifiche.
GPS e le scale astronomiche non sono modalità accettate
Di' UTC quando fai riferimento alla riga universale di ToolAcre perché è ciò che richiede l'origine e le etichette dell'interfaccia utente. Dire Unix secondi o millisecondi per l'input numerico. Evita affermazioni generiche che riducono UTC, GMT e tempo atomico in sinonimi.
La precisione nella denominazione è uno strumento di debug. Identifica quali trasformazioni sono necessarie e quali affermazioni rimangono non verificate. Questo convertitore fornisce una prova evidente di un percorso (il conteggio Unix per la visualizzazione UTC/local) e non ne offre intenzionalmente nessuno per scale non correlate.
Quando scrivi la documentazione, allega ciascun termine a un campo o a un formattatore concreto. Affermazioni vaghe secondo cui tutti e tre “significano lo stesso tempo” nascondono le esatte responsabilità della conversione.