Должны ли разные серверы переводить временные метки unix как разные даты?

Работая над обновлением пользовательского интерфейса для клиента, я заметил, что даты, связанные со всеми статьями, отстают на день. Я подумал, что что-то напортачил во время своих изменений, но, чтобы быть уверенным, собрал небольшой тестовый файл php, который дал мне некоторые странные результаты. Тестовый файл просто;

<?php
$date = 1246053600;
echo 'unix: ',$date,', converted: ',date('d/m/Y', $date);
?>

Если я запускаю приведенный выше код на своем локальном хосте, я получаю:

unix: 1246053600, преобразовано: 26.06.2009

Но если я запускаю его на рабочем сервере, я получаю:

unix: 1246053600, преобразовано: 27.06.2009

Заметили разницу в днях между ними? Что тут происходит?! Конечно, преобразование временной метки unix в дату не имеет каких-либо конкретных зависимостей от сервера?


person Mathew    schedule 25.06.2009    source источник


Ответы (3)


Ваши серверы могут быть настроены на два разных часовых пояса, и они интерпретируют метку времени как количество секунд, прошедших с полуночи 1 января 1970 года GMT. Даты могут отличаться не на целый день, а только на часть дня, достаточно, чтобы он перешагнул границу полуночи.

person Breton    schedule 25.06.2009
comment
Оказалось, что это именно так; настройки часового пояса на рабочем сервере просто перенесли дату на следующий день. - person Mathew; 25.06.2009

Проблема в том, что значение $date, которое вы предоставляете, должно быть указано в формате UTC. Если вы используете gmdate, вы получите одинаковый результат на обоих серверах. . В противном случае отображаемые дата и время будут скорректированы в соответствии с часовым поясом серверов. Вы можете использовать код O (заглавная буква «о»), чтобы распечатать часовой пояс, чтобы очистить текущие настройки на каждом сервере:

echo 'unix: ',$date,', converted: ',date('d/m/Y O', $date);

person Conspicuous Compiler    schedule 25.06.2009

У меня была аналогичная проблема раньше. Я обнаружил, что часовой пояс в php.ini моей машины для разработки отличается от рабочего сервера.

Я бы сказал, что это стоит проверить.

person Marcel    schedule 25.06.2009