yii2时区格式化程序问题

7

在php.ini中,时区是UTC。系统时区也是UTC。Yii的默认时区是UTC。但是我的日期时间属性在保存到数据库之前会被转换为我的时区“亚洲/加尔各答”。

例如:UTC时间12:00小时,我的输入是17.30小时,我希望在数据库中得到12:00小时,在视图中得到17.30小时。但是我在数据库中得到了17:30小时,在视图中得到了23:00小时。

web.php:

'formatter' => 
        [
            'class' => 'yii\i18n\Formatter',
            'dateFormat' => 'php:d-m-Y',
            'datetimeFormat' => 'php:d-m-Y H:i a',
            'timeFormat' => 'php:H:i A',
            'timeZone' => 'Asia/Kolkata',
        ],

1
我有同样的问题。 - Bloodhound
1个回答

1
你可以选择使用预定义的格式来保存特定的时间戳值。假设你在后端将日期时间字段定义为整数类型,且想要将其保存为整数类型,那么你可以这样设置它的行为。
public function behaviors()
{
    return [
        'timestamp' => [
            'class' => TimestampBehavior::className(),
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => 'creation_time',
                ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time',
            ],
            'value' => function() { return date('U'); // unix timestamp },
        ],
    ];
}

你可以配置yii\i18n\formatter控制本地化显示的全局日期格式。你可以在配置文件中设置类似以下的内容,以便在整个应用程序中使用。
'formatter' => 
        [
            'class' => 'yii\i18n\Formatter',
            'dateFormat' => 'php:d-m-Y',
            'datetimeFormat' => 'php:d-m-Y H:i a',
            'timeFormat' => 'php:H:i A',
            'defaultTimeZone' OR 'timeZone' => 'Asia/Calcutta', //global date formats for display for your locale.
        ],

请阅读此链接,并参考文档

希望它能够正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接