Strumenti per sviluppatori · Convertitore di timestamp Unix
Cosa significa la Z: UTC, offset e designatori nei timestamp ISO 8601
· Come funziona
timestamp iso-8601 fusi orari
I convertitori e le API stampano gli istanti come stringhe ISO 8601 e la Z finale o offset è la parte che le persone saltano. Questo post spiega il formato pezzo per pezzo in modo da poter leggere correttamente UTC e l'output locale.
Due stringhe, un istante: 10:00:00Z e 12:00:00+02:00 fianco a fianco, e il lettore che pensa che siano a due ore di distanza
`2025-02-03T10:00:00Z` e `2025-02-03T12:00:00+02:00` nominano un istante. La seconda stringa mostra un orologio da parete due ore avanti e fornisce l'offset necessario per sottrarre quelle ore. Leggere solo il campo dell'ora crea un divario immaginario tra eventi simultanei.
ToolAcre passa entrambe le stringhe a Date e restituisce secondi di epoca, millisecondi di epoca e una stringa canonica UTC ISO. I risultati numerici uguali sono il confronto decisivo. Un quadrante dell'orologio modificato non implica una modifica del tempo trascorso quando un designatore alla fine rappresenta la differenza.
La procedura di confronto sicuro consiste nel normalizzare prima ciascuna stringa in millisecondi di epoca. Se questi numeri interi corrispondono, la differenza apparente dell'orologio è una rappresentazione piuttosto che il tempo trascorso.
L'anatomia di una data-ora ISO 8601: data, separatore T, ora, frazioni di secondo e designatore di zona
Il valore ISO generato dallo strumento ha una data di calendario, `T`, campi ora-minuto-secondo, una frazione di millisecondi a tre cifre e `Z` finale. Questa forma esatta proviene da `toISOString()`. La gestione dell'input è più ampia perché Date analizza la stringa fornita, ma il messaggio di errore consiglia un valore esplicito come `2024-03-01T09:30:00Z`.
I separatori rendono leggibili le parti; il designatore del terminale rende determinato l'istante. Le frazioni perfezionano la posizione entro un secondo senza modificare la zona. Quando confronti l'output API, mantieni allegato il designatore finale. Troncamento di uno screenshot prima che rimuova le informazioni necessarie per mappare l'orologio su UTC.
Z per Zulu: perché Z significa UTC, la sua origine è nei fusi orari militari e aeronautici e perché non equivale a nessun designatore
All'interno di questa implementazione, `Z` viene rilevato come zona esplicita e `toISOString()` la utilizza per UTC. Il resoconto di origine militare della cartella di lavoro non è documentato nel repository, quindi questo articolo non lo ripete come fonte storica. Il fatto operativo è più ristretto e verificabile: una Z finale impedisce l'assunzione dell'ora locale.
Nessun designatore non è un'altra ortografia di Z. ToolAcre imposta `assumedLocal` per una data-ora priva di Z o di un offset numerico, quindi indica all'utente quale zona del browser ha fornito l'interpretazione. La sostituzione di un suffisso mancante con Z modifica l'istante previsto ogni volta che l'orologio originale era inteso come locale.
In questo convertitore, Z contrassegna il modulo UTC; la sua storia dei nomi è al di fuori delle prove del repository
Un suffisso come `+02:00` registra la differenza tra l'orologio scritto e UTC in quell'istante. Non identifica una città. Molte regioni possono condividere una compensazione e una regione può utilizzare un'altra compensazione in un'altra data. La corda preserva la lettura, non le regole politiche che l'hanno prodotta.
Questa limitazione è importante negli orari ricorrenti. Un API può riportare fedelmente un istante passato con `+02:00`, ma il suffisso da solo non può calcolare l'incontro 09:00 del prossimo inverno. La conversione dell'epoca necessita solo dell'offset fornito; la futura pianificazione del wall-time necessita di una zona denominata e di una logica consapevole delle regole all'esterno di questo pannello.
Esempio elaborato: un'epoca, due letture: il valore UTC e il valore locale mostrati da un convertitore e confermando che nominano lo stesso istante
Utilizza l'epoca 1,738,577,600 secondi per il controllo di questo articolo. Il convertitore esegue il rendering di `2025-02-03T10:00:00.000Z`. Una stringa di origine di `2025-02-03T12:00:00+02:00` viene riconvertita allo stesso conteggio perché la sua lettura del muro due ore dopo è bilanciata dall'offset positivo di due ore.
La riga locale del browser potrebbe visualizzare una terza ora dell'orologio. Ciò non crea un terzo evento; è un altro passaggio di formattazione su 1,738,577,600,000 millisecondi. Verifica l'identità con i secondi o ISO, quindi utilizza ciascun orologio etichettato solo per il pubblico di cui rappresenta la zona.
Questa uguaglianza può anche diventare un dispositivo di regressione: analizzare entrambe le stringhe di origine e affermare un valore di epoca. Questo test protegge l'aritmetica dell'offset senza fissare la prosa di visualizzazione dipendente dalla locale.
Il designatore mancante, un semplice 2024-05-01T10:00:00, è ambiguo e come lo interpretano le diverse lingue
Il caso del designatore mancante necessita di un perfezionamento. Una data semplice come `2025-02-03` viene letta come UTC secondo la regola ECMAScript implementata e testata qui. Una semplice data/ora come `2025-02-03T10:00:00` viene letta come locale e contrassegnata. Chiamarli entrambi semplicemente “ambigui” contraddirebbe il codice.
La pratica forma sicura per un istante di interscambio comprende ancora Z o un offset. Una data-ora locale può essere intenzionale se inserita tramite il controllo `datetime-local` del pannello, ma copia la stringa ISO risultante prima di condividerla. Questa conversione registra l'istante in cui l'ambiente corrente deriva dall'orologio da parete.
Un designatore mancante non è sempre ambiguo: questa implementazione distingue le date dalle date-ora
ISO 8601 copre più notazioni di quelle dimostrate da questo convertitore, ma il repository non fornisce parser o test per intervalli, durate o date settimanali. L'accettazione della data può variare in base alla piattaforma per le stringhe al di fuori dei suoi esempi documentati affidabili. Questo articolo evita quindi di presentare il pannello come un generale validatore grammaticale ISO.
Se un contratto API consente un modulo di data specializzato, convalidalo con il parser di quel API. Il percorso data-epoca di ToolAcre è adatto a date-ora esplicite e alla forma del selettore locale che emette. Un'analisi della data riuscita dimostra che questo browser ha accettato una stringa, non che ogni consumatore conforme agli standard debba accettarla.
Le durate, gli intervalli e le date della settimana non rientrano nell'input accettato dimostrato qui
Leggere un timestamp fino al suo suffisso prima di confrontare i campi dell'orologio. Z ancora l'orologio scritto a UTC; un offset numerico restituisce l'aritmetica a UTC; una data-ora senza zone richiede al browser di utilizzare l'interpretazione locale. Questi finali rispondono a domande diverse nonostante i prefissi dall'aspetto simile.
Il convertitore etichetta l'output universale generato e segnala quando ha assunto l'ora locale. Usa questi avvisi come parte del risultato, non come decorazione. Un valore orario copiato senza il suo designatore è una prova incompleta, mentre un'epoca o una riga canonica ISO mantiene intatto l'istante tra i lettori.