yii2 timezone formatter中的问题

时间:2015-10-15 03:36:08

标签: yii2

php.ini时区中的

是UTC。系统时区是UTC。 yii defaultTimeZone是UTC。但是在保存到数据库之前,我的datetime属性被转换为我的时区“Asia / Kolkata”。

例如:UTC时间12:00Hrs 我的输入17.30hrs 我对db的期望是12:00hrs,在视图中是17.30hrs 但我在db中得到的是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 个答案:

答案 0 :(得分: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 },
        ],
    ];
}

您可以配置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.
        ],

阅读此Link,并参阅Doc

希望它的作品。