Php Yii2将时间保存为UTC到数据库,但显示在其他时区

Php Yii2将时间保存为UTC到数据库,但显示在其他时区,php,yii,yii2,Php,Yii,Yii2,有没有一种简单的方法可以在UTC中保存日期和时间,但在显示日期和时间时,可以将其转换为特定的时区?我补充说 'formatter' => [ 'class' => 'yii\i18n\Formatter', 'timeZone' => 'America/New York', ], 但现在所有内容都保存为数据库中的EST时区。我希望数据库始终为UTC,并控制在php中打印时间和日期时显示的时区 基本上,我希望格式化程序有一个单独的设置,用于控制进

有没有一种简单的方法可以在UTC中保存日期和时间,但在显示日期和时间时,可以将其转换为特定的时区?我补充说

'formatter'  => [
    'class' => 'yii\i18n\Formatter',
    'timeZone'        => 'America/New York',
],
但现在所有内容都保存为数据库中的EST时区。我希望数据库始终为UTC,并控制在php中打印时间和日期时显示的时区


基本上,我希望格式化程序有一个单独的设置,用于控制进入数据库的格式,另一个设置用于控制用于显示目的的格式(因为用户可以处于不同的时区)。

您使用的是Yii还是Yii

对于Yii2,首先为应用程序设置时区,例如:

$config = [
    'timeZone' => 'Europe/London',
    // other config goes here
];
$model->date = Yii::$app->formatter->asTime('2014-10-06 14:41:00 UTC');
echo date("d. M. Y.", $your_date);
每次使用PHP日期函数时,日期将在此时区自动转换。请注意,strotime总是使用UTC时间返回秒数,这是常见错误

将日期保存到数据库时,可以使用UTC时间获取日期,例如:

$config = [
    'timeZone' => 'Europe/London',
    // other config goes here
];
$model->date = Yii::$app->formatter->asTime('2014-10-06 14:41:00 UTC');
echo date("d. M. Y.", $your_date);
当输出时区时,只需使用PHP date函数,格式化程序中没有时区,您将在配置文件中设置的时区中获取日期。例如:

$config = [
    'timeZone' => 'Europe/London',
    // other config goes here
];
$model->date = Yii::$app->formatter->asTime('2014-10-06 14:41:00 UTC');
echo date("d. M. Y.", $your_date);

看看这个:我在YII1中有应用程序,在Postgresql中有数据库。在Postgresql中,我有两种类型:“带时区的时间戳”,在“afterFind”中,我将日期转换为我的时区(在主YII配置的“timezone”选项中设置)。我正在使用php“DateTime”对象来转换它。格式化程序会影响输入和输出日期。现在它正确地保存为数据库中的UTC。我不想每次输出数据库日期时间时区时都硬编码。。。