在Cakephp3中更改FrozenTime时区

时间:2019-03-22 12:17:16

标签: php mysql cakephp timezone cakephp-3.0

我有一个脚本,该脚本每天将日志文件批量导入到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。

0 个答案:

没有答案