PHP неправильная дата/время

PHP date() & time() неверное время возврата:

, когда date.timezone = "Europe/Riga" время, возвращенное date() был 03-12-2011 08:57:12, но системное время был 03-12-2011 01:57:12 (часовой пояс Европа / Рига-правильное время на данный момент). Когда я изменил часовой пояс на "Европа / Лондон", время изменилось на 03-12-2011 06:57:12 ( фактическое время 02-12-2011 23:57:12 )

время возвращенные date / hwclock --show был правильным (03-12-2011 01:57:12 С системным часовым поясом, установленным как Рига)

ОС: Debian 6.0

Я проверил большинство вопросов, касающихся похожих проблем на SO / Google, но все они, похоже, имеют неправильный часовой пояс.

насколько я могу судить, существует проблема между php - > os. Конечно, поскольку неправильное смещение времени всегда постоянно, я мог бы вычесть разницу, но это не правильное решение.

любые идеи будут с благодарностью.

6 ответов


проблема похожа на то, что я видел на одном из моих серверов. Похоже на ошибка в php 5.3.2-1. Попробуйте запустить PHP-скрипт в отчете об ошибке и опубликовать результаты.


чтение руководства PHP кажется, что поведение дата.часовой пояс зависит от настроек в php.ini. Существует еще один способ установить часовой пояс по умолчанию во всех функциях даты/времени, и это для меня. Попробуйте установить его с помощью:

date_default_timezone_set('Europe/Riga');

вместо дата.часовой пояс код.


часовой пояс системы может быть неправильным. Это приводит к сдвигу во времени, заданном функцией PHP date (), хотя обе даты php.часовой пояс (в PHP.ini) и системное время сервера правильные.


У меня тоже были проблемы с часовыми поясами. Это может кому-то пригодиться.

в моем случае Chile Sumer Time CLST вернул неправильное смещение timzeone.

обновление timezonedb работал для меня.

на: https://pecl.php.net/package/timezonedb

Для Widnows загрузите самую новую версию dll, скопируйте в каталог "ext". Отредактируйте php.ini и положить ниже строка:

расширения=php_timezonedb.dll файлы

Для Linux вы можете использовать :

pecl установить timezonedb

и в php.ini поставил:

расширения=php_timezonedb.так


вы должны установить дату.часовой пояс в PHP.ini и перезапустить сервер http://php.net/manual/en/timezones.php


время PHP основано на шкале времени эпохи, которая использует GMT и более поздний UTC. Большинство людей теперь называют это время unix. Поскольку PHP использует время unix, часовые пояса не используются. Я считаю, что вычитание часов часового пояса в секундах является правильным методом для корректировки различий.