Меняются ли временные метки unix в разных часовых поясах?


136

Как спрашивает испытуемый; временные метки UNIX меняются в каждом часовом поясе?

Например, если бы я отправил запрос на другой адрес электронной почты на другой стороне мира, говоря: «Отправить электронное письмо, когда время 1397484936» , будет ли временная метка другого сервера на 12 часов отстать от моей?


7
Нет, это количество секунд, прошедших с определенного момента времени.
Никлас Б.

Ответы:


228

Определение метки времени UNIX не зависит от часового пояса. Отметка времени - это количество секунд (или миллисекунд), прошедших с абсолютного момента времени, полуночи 1 января 1970 года по всемирному координированному времени. (UTC - это время по Гринвичу без поправок на летнее время). Независимо от вашего часового пояса, временная метка представляет момент, который везде одинаков. Конечно, вы можете конвертировать туда и обратно в представление местного часового пояса (время 1397484936 - это такое-то местное время в Нью-Йорке или какое-то другое местное время в Джакарте), если хотите.

Статья на http://en.wikipedia.org/wiki/Unix_time впечатляет, если вы хотите прочитать ее подольше.


19
В другой жизни я летный инструктор. Мы используем всемирное координированное время (также известное как «зулусское время») для времени взлета и посадки, так что разница во времени является точным измерением продолжительности полета без необходимости учитывать часовой пояс начального и конечного аэропортов. Действительно, я совершал рейсы, которые начинались в летнее время и заканчивались после него, или наоборот!
RobP

19
+1 к этому ответу. Чтобы добавить идею, которая может помочь прояснить: сама метка времени - это не UTC, метка времени - это количество (милли) секунд, прошедших от контрольной точки во времени. Контрольная точка для временной метки Unix (эпоха Unix) - это UTC: 00:00:00 UTC 1970.01.01
Sandman

4
Исходя из ответа @Sandman, 1397484936 секунд с начала - это всего лишь 1397484936 секунд. Не вдаваясь в другие науки, во всем мире в этот момент прошло 1397484936 секунд. Когда эти 1397484936 секунд прошло это может быть 4 PM:16:00 в Нью - Йорке, 9 PM/21:00 в Лондоне, который по местному времени зоны
conrad10781

1
@RobP Это неправда. UNIX не зависит от часового пояса, вы сами сказали in UTC time. Есть два смещения: a raw offsetи DST offset. Например, America/New_Yorkнеобработанное смещение равно -18000, а смещение летнего времени равно 3600, поэтому из любой метки времени UNIX вам нужно выполнить математические вычисления UNIX + offset + dstOffset, чтобы получить метку времени Нью-Йорка.
Макс

15

Время Unix определяется как количество секунд, прошедших с 00:00:00 по всемирному координированному времени ( UTC ), четверг, 1 января 1970 г. Итак, ответ отрицательный.


5

ЕСЛИ оба компьютера настроены правильно, а их часы установлены на правильный часовой пояс и значения UTC, они должны вернуть одно и то же значение.
Конечно, это большой IF. Почти наверняка разница между временем, сообщаемым двумя компьютерами, составляет не менее секунды, а чаще минут. И многие компьютеры настроены на неправильные настройки часового пояса и будут сообщать свое местное время, когда их спрашивают, а не UTC.

И в этом разница между теорией и практикой. Теоретически все одно и то же, на практике никогда не стоит полагаться на это.


3

Временные метки Unix не меняются в зависимости от часовых поясов , они создаются для того, чтобы иметь стандартное время по всему миру.

ПРИМЕЧАНИЕ. - Метки времени рассчитываются на основе текущего времени на компьютере, поэтому не полагайтесь на них до тех пор, пока вы не уверены в настройках времени на участвующих машинах.


3

Кто-то заявил, что «UTC - это время по Гринвичу без поправок на летнее время». Это просто неправда. GMT не имеет летнего времени. GMT измеряется в Гринвиче, Англия (в Военно-морской обсерватории) [0 долготы, но не 0 широты]. Всемирное координированное время измеряется на экваторе [0 долготы и 0 широты, который находится в океане у берегов Африки].

Что это меняет? Не имеет значения, "какое сейчас время суток?" Однако это имеет значение при исчислении года. Теперь вы думаете, что год будет измеряться в зависимости от местоположения центра (ядра) Земли, верно? Когда земное ядро ​​вернулось в то же место, где оно было ~ 365 дней назад, это был год. Это не измеряется таким образом. Он измеряется тем, что конкретное место на Земле возвращается в то же место (относительно Солнца), которое было ~ 365 дней назад. Но период дня и года не делится поровну. Как только Земля вернется туда, где она была год назад, Земля будет смотреть не в том же направлении, что и в прошлом году, поэтому это пятно на Земле не смотрит в том же направлении, что было год назад. Находясь дальше на север, Гринвич не собирается вернуться в то же место (относительно Солнца), которое было в прошлом году в то же время, что и 0 Lat / 0 Long. Таким образом, если вы основываете определение на Гринвиче и 0/0, вы получите, хотя и немного, другой ответ на вопрос «сколько дней в году». Другими словами, когда данное пятно на Земле возвращается туда, где оно было год назад (относительно Солнца), ядро ​​Земли не находится в том же месте, что было год назад, так какое место вы выбираете вопросы, потому что ядро ​​Земли окажется в другом месте (относительно Солнца), чем это было год назад, если вы выберете другое место на Земле. хотя и несколько иной ответ на вопрос «сколько дней в году». Другими словами, когда данное пятно на Земле возвращается туда, где оно было год назад (относительно Солнца), ядро ​​Земли не находится в том же месте, что было год назад, так какое место вы выбираете вопросы, потому что ядро ​​Земли окажется в другом месте (относительно Солнца), чем это было год назад, если вы выберете другое место на Земле. хотя и несколько иной ответ на вопрос «сколько дней в году». Другими словами, когда данное пятно на Земле возвращается туда, где оно было год назад (относительно Солнца), ядро ​​Земли не находится в том же месте, что было год назад, так какое место вы выбираете вопросы, потому что ядро ​​Земли окажется в другом месте (относительно Солнца), чем это было год назад, если вы выберете другое место на Земле.

Ни UTC, ни GMT не имеют перехода на летнее время. Европа / Лондонское время, часовой пояс, в котором находится Гринвич, тоже. Но GMT этого не делает. GMT - это то, что американцы называют «стандартным временем», то есть без летнего времени.

Возвращаясь к вопросу, Epoch time технически не имеет часового пояса. Он основан на конкретном моменте времени, который так уж и совпадает с «четным» временем UTC (в точное начало года, десятилетия и т. Д.). Если эта концепция не укладывается в ваш мозг и помогает думать о времени Эпохи как о времени в формате UTC, продолжайте. Вы в хорошей компании, и по большому счету это не имеет значения. Вы когда-нибудь видели судебные процессы, в которых сомоену присуждают 1 доллар. Это своего рода вердикт типа «ты прав, но это не имеет особого значения». Если кто-то подаст на вас в суд за то, что вы сказали, что время эпохи находится в часовом поясе UTC, он выиграет 1 доллар. Это не купит им чашку кофе в любом Starbucks в любом часовом поясе на планете.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.