Czy znaczniki czasu unix zmieniają się w różnych strefach czasowych?


144

Jak pyta temat; czy znaczniki czasu UNIX zmieniają się w każdej strefie czasowej?

Na przykład, jeśli wyślę żądanie do innego e-maila na drugą stronę świata, mówiąc: „Wyślij wiadomość e-mail o godzinie 1397484936” , czy znacznik czasu drugiego serwera będzie opóźniony o 12 godzin?


7
Nie, to liczba sekund, które minęły od określonego momentu w czasie.
Niklas B.,

Odpowiedzi:


247

Definicja znacznika czasu UNIX jest niezależna od strefy czasowej. Sygnatura czasowa to liczba sekund (lub milisekund), które upłynęły od bezwzględnego punktu w czasie, północy 1 stycznia 1970 czasu UTC. (UTC to średni czas Greenwich bez korekt czasu letniego). Niezależnie od Twojej strefy czasowej, znacznik czasu reprezentuje moment, który jest wszędzie taki sam. Oczywiście możesz konwertować tam iz powrotem do reprezentacji lokalnej strefy czasowej (czas 1397484936 to taki a taki czas lokalny w Nowym Jorku lub inny czas lokalny w Dżakarcie), jeśli chcesz.

Artykuł pod adresem http://en.wikipedia.org/wiki/Unix_time jest imponujący, jeśli chcesz dłużej czytać.


19
W innym życiu jestem instruktorem lotów. Używamy czasu UTC (znanego również jako „czas Zulu”) do czasu startu i lądowania, aby różnica między tymi czasami była dokładnym pomiarem długości lotu, bez konieczności rozważania, w jakiej strefie czasowej znajdują się lotniska początkowe i końcowe Rzeczywiście, wziąłem loty, które zaczęły się w czasie letnim i zakończyły po nim lub odwrotnie!
RobP

20
+1 do tej odpowiedzi. Aby dodać pomysł, który może pomóc w wyjaśnieniu: sam znacznik czasu nie jest czasem UTC, znacznik czasu to liczba (mili) sekund, które minęły od punktu odniesienia w czasie. Punktem odniesienia dla znacznika czasu uniksowego (epoka uniksowa) jest ten, który jest UTC: 00:00:00 UTC 1970.01.01
Sandman

4
Opierając się na odpowiedzi @Sandmana, 1397484936 sekund od początku to tylko 1397484936 sekund. Bez wchodzenia w inną naukę wszędzie na świecie upłynęło 1397484936 sekund. Po upływie tych 1397484936 sekund może to być godzina 16:00:16:00 w Nowym Jorku, 21:00 w Londynie, czyli lokalne strefy czasowe
conrad10781

1
@RobP To nieprawda. Sam powiedziałeś, że UNIX nie jest niezależny od strefy czasowej in UTC time. Istnieją dwa przesunięcia, a raw offseti DST offset. Na przykład America/New_Yorkprzesunięcie surowe to -18000, a przesunięcie czasu letniego to 3600, więc z dowolnego znacznika czasu UNIX musisz wykonać obliczenia UNIX + offset + dstOffset, aby uzyskać znacznik czasu z Nowego Jorku.
Max

1
@Max Wydaje mi się, że właściwie nie trafisz w sedno, gdy tylko powiesz „New York timestamp” - istnieje coś takiego jak czas nowojorski, ale znacznik czasu jest niezależny od lokalizacji i strefy czasowej. Pozwala to łatwo porównać dwa znaczniki czasu bez żadnej arytmetyki, aby zobaczyć, który jest wcześniejszy, a który później.
RobP

15

Czas uniksowy definiuje się jako liczbę sekund, które upłynęły od 00:00:00 uniwersalnego czasu koordynowanego ( UTC ), czwartek, 1 stycznia 1970 r. Odpowiedź brzmi więc: nie


6

Jeśli oba komputery są prawidłowo skonfigurowane, a ich zegary są ustawione na prawidłowe wartości strefy czasowej i czasu UTC, powinny zwrócić tę samą wartość.
Oczywiście to duży IF. Jest prawie pewne, że między czasem zgłaszanym przez dwa komputery będzie różnica co najmniej sekundy, a częściej minut. Wiele komputerów jest skonfigurowanych tak, aby mieć nieprawidłowe ustawienia strefy czasowej i będą zgłaszać swój czas lokalny, gdy zostaniesz zapytany o znacznik czasu, a nie UTC.

I na tym polega różnica między teorią a praktyką. W teorii jest tak samo, w praktyce nigdy nie należy na tym polegać.


3

Uniksowe znaczniki czasu nie zmieniają się w różnych strefach czasowych , są tworzone w celu posiadania standardowego czasu na całym świecie.

UWAGA: - Znaczniki czasu są obliczane na podstawie aktualnego czasu w komputerze, dlatego nie należy na nich polegać, dopóki nie masz pewności co do ustawień czasu w uczestniczących maszynach.


3

Ktoś stwierdził, że „UTC to czas uniwersalny Greenwich bez korekty czasu letniego”. To po prostu nieprawda. GMT nie ma czasu letniego. GMT jest mierzone w Greenwich w Anglii (w Naval Obeservatory) [0 długości geograficznej, ale nie 0 szerokości geograficznej]. Czas UTC jest mierzony na równiku [0 długości i 0 szerokości geograficznej - co zdarza się, że leży w oceanie u wybrzeży Afryki].

Jaką to robi różnicę? Nie robi różnicy, jeśli chodzi o to, „która jest pora dnia?” Ma to jednak znaczenie, jeśli chodzi o obliczanie roku. Teraz można by pomyśleć, że rok będzie mierzony w oparciu o położenie środka (jądra) ziemi, prawda? Kiedy jądro Ziemi powróciło w to samo miejsce, co około 365 dni temu, minął rok. Nie jest to mierzone w ten sposób. Mierzy się go przez określone miejsce na Ziemi wracające do tego samego miejsca (względem słońca), co ~ 365 dni temu. Ale okres dnia i roku nie jest równy. Kiedy Ziemia wróci mniej więcej na miejsce, w którym była rok temu, nie jest zwrócona w tym samym kierunku, co w zeszłym roku, więc miejsce na ziemi nie jest skierowane w tym samym kierunku, co rok temu. Będąc dalej na północ, Greenwich nie wróci do tego samego miejsca (względem słońca), co w zeszłym roku, w tym samym czasie, gdy wynosi 0 Lat / 0 Long. Więc jeśli opierasz definicję na Greenwith kontra 0/0, otrzymasz, choć nieco inną, odpowiedź na pytanie „ile dni ma rok”. Innymi słowy, kiedy dane miejsce na Ziemi wraca do miejsca, w którym było rok temu (w stosunku do Słońca), jądro Ziemi nie znajduje się w tym samym miejscu co rok temu, więc jakie miejsce wybierasz sprawy, ponieważ jądro ziemi będzie znajdować się w innym miejscu (w stosunku do słońca) niż rok temu, jeśli wybierzesz inne miejsce na ziemi. choć trochę inna odpowiedź na pytanie "ile dni ma rok". Innymi słowy, kiedy dane miejsce na Ziemi wraca do miejsca, w którym było rok temu (w stosunku do Słońca), jądro Ziemi nie jest w tym samym miejscu co rok temu, więc jakie wybierasz sprawy, ponieważ jądro ziemi będzie znajdować się w innym miejscu (w stosunku do słońca) niż rok temu, jeśli wybierzesz inne miejsce na ziemi. choć trochę inna odpowiedź na pytanie "ile dni ma rok". Innymi słowy, kiedy dane miejsce na Ziemi wraca do miejsca, w którym było rok temu (w stosunku do Słońca), jądro Ziemi nie znajduje się w tym samym miejscu co rok temu, więc jakie wybierasz sprawy, ponieważ jądro ziemi będzie znajdować się w innym miejscu (względem Słońca) niż było rok temu, jeśli wybierzesz inne miejsce na ziemi.

Ani UTC, ani GMT nie mają czasu letniego. Czas europejski / londyński, strefa czasowa, w której znajduje się Greenwich, tak. Ale GMT nie. GMT to coś, co Amerykanie nazwaliby „czasem standardowym” - tj. Bez czasu letniego.

Wracając do pytania, czas epoki nie ma technicznie określonej strefy czasowej. Opiera się na określonym punkcie w czasie, który tak się składa, że ​​pokrywa się z „parzystym” czasem UTC (dokładnie na początku roku i dekady itd.). Jeśli ta koncepcja nie pasuje dobrze do twojego mózgu i jeśli pomaga myśleć o czasie epoki jako o UTC, śmiało. Jesteś w dobrym towarzystwie i masz wielki plan, to naprawdę nie ma znaczenia. Widziałeś kiedyś te procesy sądowe, w których komuś przyznano 1 dolara. To rodzaj werdyktu typu „masz rację, ale to nie ma znaczenia”. Gdyby ktoś pozwał cię za powiedzenie, że czas epoki jest w strefie czasowej UTC, wygrałby 1 $. To nie kupiłoby im filiżanki kawy w żadnym Starbucksie w żadnej strefie czasowej na świecie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.