我有一个脚本,该脚本每天将日志文件批量导入到CakePHP3
应用程序将查询的“ my_logs_db.logs”表中。
在“日志”表中,我有一个名为'date_time'
的日期时间字段。 'date_time'
字段的导入日期是指设置为'Europe/Paris'
而不是'UTC'
我想要的是显示带有应用程序时区的date_time字段,例如:“印度/同学聚会(UTC + 4)”。
所以我尝试了这个:
我在数据源config/app.php
上将时区设置为SYSTEM。使用该值,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
}
我想要的日期时间应该保持不变,并且时区应该设置为“欧洲/巴黎”
对于“ FrozenTime”,如何将时区设置为“欧洲/巴黎”而不是“ UTC”? 还是我必须在SQL查询中添加一些内容?
请注意,我不想在工作时将系统时区更改为UTC。