为什么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
答案 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)