Должны ли разные серверы переводить метки времени Unix как разные даты? - PullRequest
4 голосов
/ 25 июня 2009

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

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

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

unix: 1246053600, преобразовано: 26/06/2009

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

unix: 1246053600, преобразовано: 27/06/2009

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

Ответы [ 3 ]

4 голосов
/ 25 июня 2009

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

4 голосов
/ 25 июня 2009

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

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

1 голос
/ 25 июня 2009

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

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

...