Временная метка UNIX всегда по Гринвичу?

Временная метка UNIX всегда по Гринвичу?

Я попытался запустить функцию php time()

и когда я попытался преобразовать метку времени unix из функции time(), вывод не похож на компьютерное время.

Спасибо


person bbnn    schedule 18.05.2010    source источник
comment
Значение, возвращаемое функцией time(), является местным временем. Что вы используете для отображения значения?   -  person Dean Harding    schedule 18.05.2010
comment
Политически корректное время — это, конечно, UTC, поскольку Гринвич больше не является центром империи. Ну, наверное, да, но империя уже не такая большая, как раньше :-)   -  person paxdiablo    schedule 18.05.2010
comment
Значение, возвращаемое из time(), представляет собой количество секунд от даты эпохи. Сам по себе он не имеет часового пояса. При преобразовании в форму календаря часовой пояс применяется (или не применяется) к значению.   -  person David R Tribble    schedule 18.05.2010
comment
@Loadmaster, технически он действительно имеет часовой пояс, поскольку эпоха UNIX находится в UTC.   -  person paxdiablo    schedule 18.05.2010
comment
@paxdiablo, возможно, но столь же логично сказать, что для простого подсчета секунд с произвольной даты начала эпохи нет понятия часового пояса, лет, дней, часов и так далее. Это просто подсчет временных интервалов.   -  person David R Tribble    schedule 19.05.2010


Ответы (5)


да, временная метка UNIX представляет, сколько секунд прошло с эпохи unix-time в GMT+0

person zerkms    schedule 18.05.2010
comment
вся моя жизнь была ложью - person Sanya_Zol; 01.08.2013

Технически нет.

Несмотря на то, что время эпохи – это среднее количество секунд, прошедших с 1/1/70 00:00:00, настоящее "GMT" (UTC) – это не так.

Время в формате UTC нужно было изменить несколько раз, чтобы учесть замедление скорости вращения Земли.

Как все писали, большинство людей используют эпоху в UTC.

Вы можете прочитать больше на https://en.wikipedia.org/wiki/Unix_time.

person yonatanh    schedule 03.09.2017

Отметка времени UNIX (также известная как эпоха Unix) означает количество секунд, прошедших с 00:00:00 UTC (всемирное время) 1 января 1970 года. Итак, если вам нужно время в определенном часовом поясе, вы должны его преобразовать.

Хотя технически это возможно, я бы порекомендовал альтернативные способы получения текущего времени (или любого другого времени), такие как getdate, который уже учитывает местный часовой пояс перед возвратом.

person Pablo Santa Cruz    schedule 18.05.2010
comment
time() также учитывает местный часовой пояс - person zerkms; 18.05.2010
comment
@zerkms Не согласно документации: php.net/manual/en/function.time. php - person Pablo Santa Cruz; 18.05.2010
comment
@Аликс Аксель: Нет проблем! Давай Криштиану Роналду! - person Pablo Santa Cruz; 18.05.2010
comment
GMT, а не UTC! Как указано в документации: возвращает текущее время, измеренное в секундах, начиная с эпохи Unix (1 января 1970 г., 00:00:00 по Гринвичу). - person DrCJones; 13.04.2017

Да, time должен возвращать UTC. Если вы хотите, чтобы оно было преобразовано в местное время, вам нужна такая функция, как, ..., хм, дайте подумать, .., да, это все, localtime :-)

Это даст вам более удобную форму с отдельными полями.

Следуйте приведенным выше ссылкам для получения документации PHP по каждому из них. Не уверен, что PHP имеет эквивалент gmtime.


Кроме того, будьте очень осторожны при поиске в сети time man-страницы с man time — вы можете не получить того, что ожидаете. Вы определенно не получите того, что ожидаете, если будете искать справочную страницу для самого man: man man.

То есть, если вы не ищете другие вещи, чем я :-)

person paxdiablo    schedule 18.05.2010

Проверьте возвращаемое значение date_default_timezone_get(). чтобы узнать часовой пояс по умолчанию. В ссылке также перечислены способы изменения значения, предпочтительным из которых является установка date.timezone в php.ini.

person ScottR    schedule 16.09.2010