2017-08-28 36 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';,但請記住它可能會影響其他代碼和數據庫記錄保存。