2017-08-28 87 views
0

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

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 

回答

1

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

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