Как говорится в названии, кто-нибудь может объяснить, почему код
ini_set( 'date.timezone', 'Europe/Athens' );
работает, но
date_default_timezone_set( 'Europe/Athens' );
не?
Я искал решение для преобразования временной метки, и все, что я мог найти в Интернете, это использовать date_default_timezone_set
. Но конверсия всегда отличалась на 1 час.
Затем я обнаружил, что эта функция « strftime()
показывает неправильное время », которая использует код init_set (а потом у меня RTM и выяснили, что это уже упоминалось в документации). Я попробовал, и это сработало.
Но я не нашел ответа, почему date_default_timezone_set
не работает.
Может ли кто-нибудь объяснить, пожалуйста?
Вы должны использовать старую версию PHP.
date_default_timezone_set is for PHP 5.1.2 and above.
Попробуйте php -v
и проверьте свою версию PHP.
Вы можете использовать:
putenv("TZ=Europe/Berlin"); // PHP 4
локальный
сервер
Уже довольно поздно, у меня такая же проблема, и я вижу, что есть разница, я публикую скриншот с моего localhost и моего личного сервера phpinfo для часового пояса.
На моем localhost date_default_timezone_set ('[timezone]') работает правильно, однако, на сервере он всегда возвращает UTC. Основываясь на php doc, похоже, что часовой пояс не установлен в php ini моего сервера, поэтому я, вероятно, проигнорировал часовой пояс, поскольку значение не определено ранее.
Используя init_set, он делает доступным часовой пояс. Я думаю, что часовой пояс не предопределен на php ini.