Yii2格式化程序asTime返回不同​​的时间

时间:2017-08-28 11:00:28

标签: yii2

为什么Yii2格式化程序 asTime 方法会从 asDateTime 方法返回不同的时间?

Yii::$app->formatter->timeZone = 'Asia/Tehran';
date_default_timezone_set('Asia/Tehran');

var_dump(date_default_timezone_get()); //'Asia/Tehran'
var_dump(Yii::$app->timeZone); //'Asia/Tehran'
var_dump(Yii::$app->formatter->timeZone); //'Asia/Tehran'

var_dump(Yii::$app->formatter->asDatetime('now')); //'Aug 28, 2017, 3:22:25 PM'
var_dump(Yii::$app->formatter->asTime('now')); //'10:52:25 AM' Why it's different from the top

2 个答案:

答案 0 :(得分:1)

自2.0.12起,Yii检查传递给asTime()的值是否包含有关时间(小时,分钟或秒)的信息。如果不是(而now没有)则需要defaultTimeZone而不是timeZone(默认为UTC)。

如果您希望asDatetime()中的时间与asTime()相同,则需要设置Yii::$app->formatter->defaultTimeZone = 'Asia/Tehran';,但请记住它可能会影响其他代码和数据库记录的保存。

答案 1 :(得分:0)

避免时区转换仅限日期MGLMapboxAccessToken和仅限时间show package contents

private function formatDateTimeValue($value, $format, $type)