是否有一种简单的方法来保存日期&以UTC为单位的时间,但在显示日期和时间以将其转换为特定时区时?我添加了
'formatter' => [
'class' => 'yii\i18n\Formatter',
'timeZone' => 'America/New York',
],
到我的配置,但现在所有内容都保存在数据库中的EST时区中。我希望数据库始终是UTC,并且可以控制在打印时间和时间时显示的时区。在PHP中约会。
基本上我希望formatter
有一个单独的设置来控制进入数据库的格式,另一个设置来控制格式以便显示(因为用户可以在不同的时区)。
答案 0 :(得分:2)
您使用的是Yii还是Yii2?
对于Yii2,首先为您的应用设置时区,例如:
[rebase]
instructionFormat = %s [%an]
每次使用PHP日期功能日期都会自动在此时区转换。请注意,strtotime始终使用UTC时间返回秒数,这是常见错误。
将日期保存到数据库时,您可以使用formatter获取UTC时间的日期,例如:
$config = [
'timeZone' => 'Europe/London',
// other config goes here
];
当输出时区只使用PHP日期功能时,没有时区的格式化程序,您将获得在配置文件中设置的时区日期。例如:
$model->date = Yii::$app->formatter->asTime('2014-10-06 14:41:00 UTC');