Изменить часовой пояс FrozenTime в Cakephp3 - PullRequest
1 голос
/ 22 марта 2019

У меня есть скрипт, который ежедневно выполняет массовый импорт файлов журнала в таблицу «my_logs_db.logs», которая будет запрашиваться приложением CakePHP3.В таблице «logs» у меня есть поле даты и времени с именем 'date_time'.Импортированная дата для поля 'date_time' относится к системному часовому поясу, для которого установлено значение 'Europe/Paris', а не 'UTC'

. Я хочу, чтобы поле date_time отображалось с часовым поясом приложения, например: «Индийский / Реюньон»(UTC + 4).

Итак, я попробовал это:

Я установил часовой пояс на SYSTEM для источника данных config/app.php.С этим значением MySQL должен работать с системным временем, установленным на Europe/Paris:

'my_logs_db' => [
    'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Mysql',
    'persistent' => false,
    'host' => 'localhost',
    //'port' => 'non_standard_port_number',
    'username' => 'user',
    'password' => '*********',
    'database' => 'my_logs_db',
    'encoding' => 'utf8',
    'timezone' => 'SYSTEM',
    'flags' => [],
    'cacheMetadata' => true,
    'log' => false,
    'quoteIdentifiers' => false,
    //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
    'url' => env('DATABASE_URL', null),
],

Где-то в моем контроллере я установил часовой пояс для отображения:

date_default_timezone_set('Indian/Reunion')

Где-то вмой контроллер SQL-запрос:

$logs = $this->Logs->find();
$logs->select([
        'id',
        'date_time',
        'client_ip',
        'domain',
        ]);

Когда я отлаживаю date_time, я получаю это:

object(Cake\I18n\FrozenTime) {

    'time' => '2019-02-28T01:56:58+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false

}

И отображается дата 2019-02-28 05:56:58 (UTC + 4).

Это не подходящее время для отображения.

Дата, которую я хочу отобразить, 2019-02-28 04:56:58 (Европа / Париж + 3)

Таким образом, вывод, который я хочу получить при отладке date_time, должен выглядеть следующим образом:

object(Cake\I18n\FrozenTime) {

    'time' => '2019-02-28T01:56:58+00:00',
    'timezone' => 'Europe/Paris',
    'fixedNowTime' => false

}

Требуемое время и дата должны быть неизменными, а часовой пояс должен быть установлен на «Europe / Paris»

For "FrozenTime », как установить часовой пояс« Европа / Париж », а не« UTC »?Или мне нужно что-то добавить в мой SQL-запрос?

Обратите внимание, что я не хочу менять часовой пояс системы на UTC в качестве альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...