Yii2: установка часового пояса

Я установил часовой пояс в своем приложении Yii2, как указано в документы в config/web.php:

'timeZone' => 'Europe/Berlin',

Но: это справедливо только для Yii2 и, очевидно, не для функций PHP, например. date(). Настройки часового пояса PHP остаются неизменными, поэтому между PHP и Yii2 есть разница.

Как я могу сделать часовой пояс Yii2 ведущим часовым поясом, который устанавливает часовой пояс PHP в соответствии с настройками часового пояса в конфигурации Yii2?

РЕДАКТИРОВАТЬ

Часовой пояс задается в компоненте приложения \Yii::$app, а не в компоненте форматирования.

Я не могу изменить файл php.ini.

я думаю, вам нужно изменить ваш php.ini https://stackoverflow.com/questions/32224547/setting-the-tim‌​ezone-for-php-in-the‌​-php-ini-file

Sfili_81 08.02.2019 10:04

date_default_timezone_set() может помочь? Как?

WeSee 08.02.2019 10:07

Свойство timeZone предоставляется как альтернативный способ установки часового пояса по умолчанию для среды выполнения PHP. Настраивая это свойство, вы, по сути, вызываете PHP-функцию date_default_timezone_set(). У вас есть последняя информация в базе данных часовых поясов, установленных в вашей системе? Вы можете обратиться к Руководство по интенсивной терапии для получения подробной информации об обновлении базы данных часовых поясов.

Muhammad Omer Aslam 08.02.2019 11:26

Кроме того, при форматировании значений даты и времени Yii преобразует их в целевой часовой пояс. Предполагается, что форматируемое значение находится в формате UTC, если часовой пояс не указан явно или если вы не настроили yii\i18n\Formatter::$defaultTimeZone.

Muhammad Omer Aslam 08.02.2019 11:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
6 102
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы устанавливаете часовой пояс в компоненте Formatter. Это означает, что часовой пояс будет использоваться только для вывода даты с помощью Formatter. Если вы хотите установить глобальный часовой пояс, вы должны установить его в Конфигурация приложения. Например:

[
    'id' => 'basic',
    'timeZone' => 'Europe/Berlin',
    // other parameters of the application
]

Это то, что я уже делаю. Я отредактировал вопрос, чтобы сделать это более ясным. Извините за вводящую в заблуждение ссылку. Но это не помогает с PHP date()...

WeSee 08.02.2019 10:19

@WeSee Какая у вас версия PHP?

Maksym Fedorov 08.02.2019 10:28

Я использую PHP 7.2.12

WeSee 08.02.2019 10:31

@WeSee Можете ли вы прикрепить пример кода генерации даты?

Maksym Fedorov 08.02.2019 10:44
Ответ принят как подходящий

Я нашел решение без модификации 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

srakl 24.08.2021 06:45

общий/config/main.php

'timeZone' => 'Азия/Ташкент',

Другие вопросы по теме