Php Yii2:在用户时区中显示日期
在我的数据库中,我以UTC格式存储所有Php Yii2:在用户时区中显示日期,php,date,yii,yii2,Php,Date,Yii,Yii2,在我的数据库中,我以UTC格式存储所有datetime字段。此外,我还可以通过用户更改默认时区。每个用户都可以有自己的时区,不同于UTC 在这种情况下,如何显示所有型号datetime字段 我有个主意。要对每个ActiveRecord模型执行此操作,请执行以下操作: public function init() { parent::init(); $this->on(ActiveRecord::EVENT_AFTER_FIND, function($event) {
datetime
字段。此外,我还可以通过用户更改默认时区。每个用户都可以有自己的时区,不同于UTC
在这种情况下,如何显示所有型号datetime
字段
我有个主意。要对每个ActiveRecord模型执行此操作,请执行以下操作:
public function init()
{
parent::init();
$this->on(ActiveRecord::EVENT_AFTER_FIND, function($event) {
$this->created_date = (new \DateTime('now', new \DateTimeZone("Europe/Kiev")))->format("Y-m-d H:i:s");
});
}
但我不确定这是大量模型的最佳方式…搜索frontend/config/main.php 试着投入
return [
...
'components' => [
...
像这样的格式化程序部分
'formatter' => [
'dateFormat' => 'dd/MM/yyyy',
'datetimeFormat' => 'dd/MM/yyyy H:i:s',
'timeFormat' => 'H:i:s',
'locale' => 'it-IT',
'decimalSeparator' => ',',
'thousandSeparator' => '.',
'currencyCode' => 'EUR',
'numberFormatterSymbols' => [
NumberFormatter::CURRENCY_SYMBOL => '€',
],
'timeZone' => 'Europe/Rome',
],
设置时区、货币等参数
注意:我不记得了,但是可能NumberFormatter部分需要一些其他设置,因此如果numberFormatterSymbols部分出现错误,请删除该部分
$time = strtotime($this->created_at.' UTC');
date("Y-m-d H:i:s", $time);
您的代码将如下所示
public function init()
{
parent::init();
$this->on(ActiveRecord::EVENT_AFTER_FIND, function($event) {
$time = strtotime($model->create_at.' UTC');
$this->created_date = date("Y-m-d H:i:s", $time);
});
}
如果我要这样做,我只需要创建一个单独的助手
,并使用它以本地格式显示日期,而不是在查找后显示事件
另一种选择是使用此谢谢,但我在视图中显示日期时不使用格式化程序。添加了一个答案,看看它是否有帮助。