в php.ini я установил date.timezone = "Europe/Amsterdam"
. Перезапустил Apache, вывод в phpinfo()
показывает правильный часовой пояс (Европа/Амстердам). Теперь, когда я печатаю date('H:i')
, я получаю время UTC, которое на 2 часа отстает от нашего местного времени. Но когда я печатаю localtime(time(),true)
, я все равно получаю время UTC, хотя ожидал местное время.
Выход timedatectl
:
Local time: Thu 2020-07-09 09:15:26 CEST
Universal time: Thu 2020-07-09 07:15:26 UTC
RTC time: Thu 2020-07-09 07:15:27
Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Любая помощь, чтобы получить местное время приветствуется.
Обновление:
Вывод phpinfo():
date/time support enabled
timelib version 2017.09
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC
Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone Europe/Amsterdam Europe/Amsterdam
Итак, date.timezone верен, но в чем разница с часовым поясом по умолчанию?
Когда я добавляю эту строку над скриптом, время подходит:
date_default_timezone_set('Europe/Amsterdam');
Но справочная страница PHP date_default_timezone_set сообщает, что Вместо использования этой функции для установки часового пояса по умолчанию в вашем скрипте вы также можете использовать настройку INI date.timezone для установки часового пояса по умолчанию. Это то, что я сделал, и это не работает.
Установка часового пояса по умолчанию в скрипте, конечно, является хакерским обходным путем; установить его в php.ini - лучший способ, поэтому мне все еще интересно, как это исправить.