Я установил часовой пояс в своем приложении Yii2, как указано в документы в config/web.php:
'timeZone' => 'Europe/Berlin',
Но: это справедливо только для Yii2 и, очевидно, не для функций PHP, например. date().
Настройки часового пояса PHP остаются неизменными, поэтому между PHP и Yii2 есть разница.
Как я могу сделать часовой пояс Yii2 ведущим часовым поясом, который устанавливает часовой пояс PHP в соответствии с настройками часового пояса в конфигурации Yii2?
РЕДАКТИРОВАТЬ
Часовой пояс задается в компоненте приложения \Yii::$app, а не в компоненте форматирования.
Я не могу изменить файл php.ini.
date_default_timezone_set() может помочь? Как?
Свойство timeZone предоставляется как альтернативный способ установки часового пояса по умолчанию для среды выполнения PHP. Настраивая это свойство, вы, по сути, вызываете PHP-функцию date_default_timezone_set(). У вас есть последняя информация в базе данных часовых поясов, установленных в вашей системе? Вы можете обратиться к Руководство по интенсивной терапии для получения подробной информации об обновлении базы данных часовых поясов.






Вы устанавливаете часовой пояс в компоненте Formatter. Это означает, что часовой пояс будет использоваться только для вывода даты с помощью Formatter. Если вы хотите установить глобальный часовой пояс, вы должны установить его в Конфигурация приложения. Например:
[
'id' => 'basic',
'timeZone' => 'Europe/Berlin',
// other parameters of the application
]
Это то, что я уже делаю. Я отредактировал вопрос, чтобы сделать это более ясным. Извините за вводящую в заблуждение ссылку. Но это не помогает с PHP date()...
@WeSee Какая у вас версия PHP?
Я использую PHP 7.2.12
@WeSee Можете ли вы прикрепить пример кода генерации даты?
Я нашел решение без модификации php.ini:
В ./web/index.php и ./yii установите часовой пояс PHP в соответствии с настройками Yii2:
$application = Yii::createObject('yii\web\Application', [$config->web()]);
// make PHP use the same timezone as Yii2
date_default_timezone_set($application->timeZone);
$application->run();
Не забудьте аналогичным образом изменить консольную команду yii / yii.bat.
я получаю эту ошибку Fatal error: Uncaught Error: Call to a member function web() on array in C:\xampp\htdocs\yii2\frontend\web\index.php:65 Stack trace: #0 {main} thrown in C:\xampp\htdocs\otofacts-yii2\frontend\web\index.php on line 65 на $config->web(), я добавил ваш код в свой web/index.php
общий/config/main.php
'timeZone' => 'Азия/Ташкент',
я думаю, вам нужно изменить ваш php.ini https://stackoverflow.com/questions/32224547/setting-the-timezone-for-php-in-the-php-ini-file