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, часовые пояса не используются. Я считаю, что вычесть часы часового пояса в секундах – это правильный метод корректировки различий.