I timestamp di Unix cambiano attraverso i fusi orari?


136

Come il soggetto chiede; i timestamp UNIX cambiano in ogni fuso orario?

Ad esempio, se avessi inviato una richiesta a un'altra e-mail dall'altra parte del mondo dicendo "Invia una e-mail quando l'ora è 1397484936" , la data / ora dell'altro server sarebbe inferiore di 12 ore alla mia?


7
No, è il numero di secondi trascorsi da un determinato momento.
Niklas B.

Risposte:


228

La definizione del timestamp UNIX è indipendente dal fuso orario. Il timestamp è il numero di secondi (o millisecondi) trascorsi da un punto assoluto nel tempo, la mezzanotte del 1 gennaio 1970 in ora UTC. (UTC è l'ora di Greenwich senza aggiustamenti dell'ora legale.) Indipendentemente dal fuso orario, un timestamp rappresenta un momento uguale ovunque. Ovviamente puoi convertire avanti e indietro in una rappresentazione di fuso orario locale (l'ora 1397484936 è l'ora locale di questo tipo a New York o qualche altra ora locale a Djakarta) se lo desideri.

L'articolo su http://en.wikipedia.org/wiki/Unix_time è piuttosto impressionante se desideri una lettura più lunga.


19
Nella mia altra vita sono un istruttore di volo. Usiamo UTC (noto anche come "orario Zulu") per i tempi di decollo e atterraggio, in modo che la differenza tra i tempi sia una misurazione accurata della lunghezza del volo, senza dover considerare in quale fuso orario si trovano gli aeroporti di partenza e di arrivo In effetti, ho preso voli che sono iniziati all'ora legale e sono finiti dopo, o viceversa!
RobP

19
+1 a questa risposta. Per aggiungere un'idea che potrebbe aiutare a chiarire: il timestamp stesso non è UTC, il timestamp è un numero di (milli) secondi passati da un punto di riferimento nel tempo. Il punto di riferimento per il timestamp di Unix (l'epoca di Unix) è quello che è UTC: 00:00:00 UTC 1970.01.01
Sandman

4
A partire dalla risposta di @Sandman, 1397484936 secondi dall'inizio è proprio questo, 1397484936 secondi. Senza entrare in altre scienze, 1397484936 secondi sono trascorsi a quel punto in tutto il mondo. Trascorsi 1397484936 secondi, potrebbero essere le 16:00 e le 16:00 a New York, le 21:00 e le 21:00 a Londra, che sono i fusi orari
conrad10781 del

1
@RobP Non è vero. UNIX non è indipendente dal fuso orario, l'hai detto tu stesso in UTC time. Ci sono due offset, a raw offsete DST offset. Ad esempio, America/New_Yorkl'offset grezzo è -18000e l'offset DST lo è 3600, quindi da qualsiasi timestamp UNIX devi fare i calcoli UNIX + offset + dstOffsetper ottenere il timestamp di New York.
Max

15

Il tempo Unix è definito come il numero di secondi trascorsi dalle 00:00:00 Coordinated Universal Time ( UTC ), giovedì 1 gennaio 1970. Quindi la risposta è no


5

Se entrambi i computer sono impostati correttamente con i loro orologi impostati per il fuso orario e i valori UTC corretti, devono restituire lo stesso valore.
Naturalmente questo è un grande IF. C'è quasi sicuramente una differenza di almeno un secondo, più spesso minuti tra il tempo riportato da due computer. E molti computer sono configurati per avere impostazioni di fuso orario errate e riporteranno l'ora locale quando viene richiesto un timestamp anziché UTC.

E in ciò sta la differenza tra teoria e pratica. In teoria è lo stesso, in pratica non dovresti mai fare affidamento su di esso.


3

I timestamp Unix non cambiano attraverso i fusi orari , ma sono creati allo scopo di avere un orario standard in tutto il mondo.

NOTA: - I timestamp sono calcolati sulla base dell'ora corrente nel computer, quindi non fare affidamento su di essi fino a quando e se non si è molto sicuri delle impostazioni dell'ora nelle macchine partecipanti.


3

Qualcuno ha affermato che "UTC è l'ora media di Greenwich senza aggiustamenti dell'ora legale". Questo è semplicemente falso. GMT non ha l'ora legale. GMT è misurato a Greenwich, in Inghilterra (presso l'obeservatorio navale) [0 longitudine, ma non 0 lattitudine]. L'UTC è misurato all'equatore [0 longitudine e 0 lattitudine - che si trovano nell'oceano al largo del costo dell'Africa].

Che differenza fa? Non fa alcuna differenza in termini di "che ora del giorno è?" Tuttavia, fa la differenza in termini di calcolo di un anno. Ora penseresti che un anno verrebbe misurato in base alla posizione del centro (il nucleo) della terra, giusto? Quando il nucleo della Terra è tornato nella stessa posizione che era ~ 365 giorni fa, è passato un anno. Non è misurato in questo modo. È misurato da una posizione specifica sulla terra tornando nella stessa posizione (rispetto al sole) che era ~ 365 giorni fa. Ma il periodo di un giorno e un anno non si dividono uniformemente. Una volta che la terra è tornata all'incirca dove era un anno fa, la terra non è nella stessa direzione dell'anno scorso, quindi quel punto sulla terra non è nella stessa direzione di un anno fa. Essendo più a nord, Greenwich non tornerà nello stesso punto (rispetto al sole) che era l'anno scorso nello stesso momento in cui 0 Lat / 0 Long è. Quindi, se si basa la definizione su Greenwith vs. 0/0, si ottiene una risposta, sebbene leggermente diversa, alla domanda "quanti giorni sono in un anno". Per dirla in un altro modo, quando un dato punto sulla terra torna a dove era un anno fa (rispetto al Sole), il nucleo della terra non è nello stesso punto di un anno fa, quindi quale posto raccogli le cose perché il nucleo della terra si troverà in un punto diverso (rispetto al sole) rispetto a un anno fa, se scegli un punto diverso sulla terra. seppur leggermente, risposta diversa alla domanda "quanti giorni ci sono in un anno". Per dirla in un altro modo, quando un dato punto sulla terra torna a dove era un anno fa (rispetto al Sole), il nucleo della terra non è nello stesso punto di un anno fa, quindi quale posto raccogli le cose perché il nucleo della terra si troverà in un punto diverso (rispetto al sole) rispetto a un anno fa, se scegli un punto diverso sulla terra. seppur leggermente, risposta diversa alla domanda "quanti giorni ci sono in un anno". Per dirla in un altro modo, quando un dato punto sulla terra torna a dove era un anno fa (rispetto al Sole), il nucleo della terra non è nello stesso punto di un anno fa, quindi quale posto raccogli le cose perché il nucleo della terra si troverà in un punto diverso (rispetto al sole) rispetto a un anno fa, se scegli un punto diverso sulla terra.

Né UTC né GMT hanno l'ora legale. Ora Europa / Londra, il fuso orario in cui risiede Greenwich. GMT no. GMT è ciò che gli americani chiamerebbero un "orario standard", ovvero senza ora legale.

Tornando alla domanda, il tempo Epoch non ha tecnicamente un fuso orario. Si basa su un particolare momento nel tempo, che coincide esattamente con un orario UTC "pari" (all'inizio esatto di un anno e un decennio, ecc.). Se quel concetto non si adatta bene al tuo cervello, e se aiuta a pensare al tempo di Epoca come in UTC, vai avanti. Sei in buona compagnia e nel grande schema delle cose, non importa davvero. Hai mai visto quelle cause legali in cui al somoene vengono assegnati $ 1. È una specie di verdetto "hai ragione, ma non importa". Se qualcuno ti avesse fatto causa per aver detto che il tempo Epoch è nel fuso orario UTC, vincerebbe $ 1. Ciò non gli offrirebbe una tazza di caffè in qualsiasi Starbucks in qualsiasi fuso orario del pianeta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.