yii2 timezone formatter中的问题

Pau*_*ias 6 yii2

在php.ini时区是UTC.系统时区是UTC.yii defaultTimeZone是UTC.但是在保存到db之前,我的datetime属性被转换为我的时区"Asia/Kolkata".

例如:UTC时间12:00Hrs我的输入17.30hrs我在db中的预期是12:00hrs并且在视图中17.30hrs但是我在db中得到的是17:30,并且在视野中我得到了23:00hrs.

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',
        ],
Run Code Online (Sandbox Code Playgroud)

GAM*_*ITG 1

您可以选择使用预定义格式保存特定时间戳值。因此,假设您已在后端将日期时间字段定义为 INTEGER,并且希望将其保存为整数。您可以这样设置行为

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 },
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

您可以配置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.
        ],
Run Code Online (Sandbox Code Playgroud)

阅读此链接并参阅Doc

希望它有效。