在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)
您可以选择使用预定义格式保存特定时间戳值。因此,假设您已在后端将日期时间字段定义为 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)
希望它有效。