У меня есть скрипт, который ежедневно выполняет массовый импорт файлов журнала в таблицу «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 в качестве альтернативы.