Strumenti per sviluppatori · Convertitore di timestamp Unix
Un timestamp, due orologi: perché UTC e l'ora locale differiscono per un'epoca
· Come funziona
timestamp tempo Unix fusi orari
Un valore di epoca indica un istante, ma l'ora dell'orologio a muro che vedi dipende da dove ti trovi. Questo post spiega l'aritmetica dell'offset, perché la data stessa può differire e perché un convertitore mostra entrambe le letture.
Il cliente dice 9 mattina, il registro dice 16:00: lo stesso evento, due orologi e un ticket di supporto che non porta da nessuna parte
Un caso di supporto può bloccarsi quando una persona segnala "nove del mattino" mentre il registro dell'applicazione registra 16:00. Nessuna delle etichette dell'orologio identifica un evento finché non se ne conosce la zona o l'offset. Se entrambi i riferimenti si riferiscono alla stessa epoca, la ricerca di un ritardo di elaborazione di sette ore spreca l'indagine su una differenza di visualizzazione.
Inizia raccogliendo il timestamp grezzo e il contesto della zona di ciascun osservatore. ToolAcre mostra UTC e la lettura locale del browser corrente da una conversione, quindi il confronto è immediato per la persona che detiene il log. Un collega altrove dovrebbe confrontare il valore ISO condiviso, non dare per scontato che la riga locale della prima persona si applichi al suo computer.
Un'epoca è un istante, non il tempo di un orologio da parete: il conteggio dei secondi da 1970 che non ha una zona propria
Un'epoca è una distanza da 1970-01-01T00:00:00Z in secondi o millisecondi. Non contiene città, bandiera dell'ora legale o notazione preferita dell'orologio. Il valore 1,700,000,000 identifica quindi un istante; etichette come martedì sera o mercoledì mattina sono proiezioni fatte dopo aver scelto come leggere quell'istante.
Questo è il motivo per cui la memorizzazione di una “epoca locale” corretta è un errore di categoria. L'aggiunta di un offset modifica il conteggio e i punti in un altro momento. Memorizza o trasmetti l'istante originale, quindi applica una regola di lettura al limite dove una persona ha bisogno di un calendario. ToolAcre segue questa forma preservando i secondi numerici e i millisecondi accanto agli output formattati.
Come viene applicato un offset: aggiungendo o sottraendo ore e minuti, zone di mezz'ora e 45 minuti e offset che cambiano durante l'anno
Per un offset fisso, l'aritmetica è semplice: UTC+09:00 mostra un orologio nove ore avanti rispetto a UTC, mentre UTC−05:00 mostra uno cinque ore indietro. Le frazioni di un'ora vengono gestite come minuti, quindi un offset di quarantacinque minuti non è rappresentato in modo sicuro arrotondando a un'ora intera. Il segno appartiene alla lettura locale visualizzata.
Un offset fisso è ancora solo un'osservazione. ToolAcre chiede a Intl l'offset applicabile all'istante scelto nella zona corrente del browser. Non si presuppone che la compensazione odierna si applichi durante tutto l’anno. La copia di un offset nella configurazione dell'applicazione può quindi apparire corretta durante il test e fallire quando la regola applicabile dell'ambiente cambia.
Quando cambia anche la data: istanti vicini alla mezzanotte che cadono in giorni di calendario diversi in UTC e localmente
L'aritmetica dell'orologio può oltrepassare il confine del calendario. Un istante alle 00:20 UTC appare nella data precedente con un offset negativo e successivamente nella stessa data con uno positivo. Un biglietto che registra solo "il 14" può di conseguenza fare riferimento a diverse sezioni di un registro UTC, anche quando entrambi i partecipanti ricordano accuratamente i propri calendari.
Utilizza la data, l'ora e l'offset completi quando gestisci un evento tra i team. La riga ISO del convertitore impedisce che la data venga staccata da UTC, mentre la riga locale fornisce un contesto familiare. Se un incidente dura oltre la mezzanotte, ordina le voci per epoca o UTC invece di ordinare le etichette umane scritte in diverse zone.
Esempio realizzato: 1700000000 in UTC, in una zona UTC+9 e in una zona UTC−5 — l'aritmetica scritta e le date confrontate
L'articolo dell'unità pubblicata esistente stabilisce che 1,700,000,000 secondi è `2023-11-14T22:13:20.000Z`. Sotto una lettura fissa +09:00, aggiungi nove ore per ottenere 2023-11-15 07:13:20; sotto fisso −05:00, sottrai cinque ore per ottenere 2023-11-14 17:13:20. La data cambia solo nell'esempio orientale.
Queste due letture sfalsate sono dimostrazioni aritmetiche, non affermazioni su città nominate in quella data. Alla riga locale ToolAcre dovrebbe essere consentito di riportare qualsiasi offset fornito da Intl per la zona effettiva del browser. Confrontalo con il valore UTC e annota l'offset visualizzato anziché forzare uno dei due valori illustrativi sul risultato.
Esempio elaborato: un'epoca in UTC, quindi due letture esplicite a offset fisso
La visualizzazione di entrambe le letture rimuove la sottrazione mentale da una sessione di debug. Il team del server può citare UTC, mentre la persona che riproduce un problema può riconoscere l'orologio locale che ha visto. Poiché entrambe le righe derivano da una data, i secondi e i millisecondi corrispondenti dimostrano che non sono stati modificati in modo indipendente o arrotondati in eventi separati.
La coppia è particolarmente utile negli screenshot: includi la nota dell'unità e la riga ISO anziché ritagliare in base al valore locale familiare. Un orologio ritagliato può essere reinterpretato dopo un viaggio o una modifica dell'impostazione della zona. Un'epoca in più ISO rimane stabile e il rendering locale spiega l'esperienza dell'utente senza sostituire quel riferimento stabile.
Ciò che questo non copre: cambiamenti storici di offset e decisioni politiche sul fuso orario, che risiedono nel database tz piuttosto che nell'aritmetica
La semplice addizione non può descrivere una zona regionale il cui offset applicabile varia. Il convertitore delega la formattazione locale a Intl, ma il suo repository non espone la tabella delle regole sottostante o le decisioni storiche. Questo articolo quindi non elenca i cambiamenti passati, né prevede politiche future né promette risultati identici da motori che trasportano dati diversi.
Quando un'applicazione deve pianificare "09:00 in questo luogo", mantieni la zona denominata e utilizza una progettazione di pianificazione basata sulla zona. Quando deve registrare “questa richiesta è avvenuta adesso”, conserva un istante. Si tratta di requisiti di dati diversi. Un `+02:00` fisso può descrivere una lettura in un istante senza identificare la norma regionale che l'ha prodotta.
L'aritmetica a compensazione fissa non può riprodurre le modifiche delle regole regionali
Pensa all'epoca come allo spillo sulla sequenza temporale e ai quadranti dell'orologio come etichette posizionate attorno ad essa. UTC fornisce un'etichetta comune; la formattazione locale ne fornisce una conveniente. ToolAcre presenta entrambi senza modificare il pin, motivo per cui è prevista una differenza di ore piuttosto che l'evidenza del tempo perso.
Per un evento contestato, incolla il conteggio non elaborato, dichiara esplicitamente l'unità e condividi l'output ISO. Quindi allega le letture locali solo come annotazioni. Questo ordine trasforma “il mio orologio contro il tuo” in una mappatura controllabile e impedisce che le modifiche ai confini della data si mascherino come eventi in giorni diversi.