PHP неправильная дата / время - PullRequest
11 голосов
/ 03 декабря 2011

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. Конечно, из-за того, что неправильное смещение времени всегда постоянно, я могу вычесть разницу, но это не правильное решение.

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

Ответы [ 7 ]

15 голосов
/ 03 декабря 2011

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

date_default_timezone_set('Europe/Riga');

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

5 голосов
/ 27 декабря 2011

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

3 голосов
/ 25 апреля 2013

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

1 голос
/ 11 октября 2018

Этот комментарий для часового пояса Азербайджана

У меня проблема с «Азия / Баку» на версии php 7.2 или php 7.1.

Я решил проблему с заменой на «Европа / Баку»

1 голос
/ 05 апреля 2016

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

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

Обновление timezonedb мне помогло.

Перейти к: https://pecl.php.net/package/timezonedb

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

extension = php_timezonedb.dll

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

pecl install timezonedb

и в php.ini положить:

extension = php_timezonedb.so

0 голосов
/ 20 января 2016

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

0 голосов
/ 02 апреля 2014

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

...