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

PHP date() & time() возвращает неправильное время:

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

Время, вернувшееся по date / hwclock --show was correct ( 03-12-2011 01:57:12 с системным 03-12-2011 01:57:12 , установленным в Риге)

ОС: Debian 6.0

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

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

Любые идеи будут высоко оценены.

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

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

 date_default_timezone_set('Europe/Riga'); 

вместо вашего кода date.timezone .

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

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

В моем случае, чилийское время Sumer CLST вернуло неправильное временное смещение.

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

Перейдите по ссылке : https://pecl.php.net/package/timezonedb

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

расширение = php_timezonedb.dll

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

pecl install timezonedb

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

расширение = php_timezonedb.so

Вы должны установить date.timezone в php.ini и перезагрузить сервер http://php.net/manual/en/timezones.php

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