Yii2格式化程序显示不同的日期

时间:2015-05-05 11:53:41

标签: yii2

我想从db查看时间,然后以时间戳格式将其保存到另一个db.table,但每次转换时我都会得到不同的时间:

        print_r($sub_datetime['datetime']);echo "<br>";
        $temptime = Yii::$app->formatter->asTimestamp($sub_datetime['datetime']);
        print_r($temptime);echo "<br> ";
        $temptime2 = Yii::$app->formatter->asDatetime($temptime);
        print_r($temptime2);echo "<br> ";
        $temptime3 = Yii::$app->formatter->asTimestamp($temptime2);
        print_r($temptime3);echo "<br> ";

得到:

10-5-2015 10:00
1431252000
10-5-2015 13:00
1431262800

1 个答案:

答案 0 :(得分:1)

问题

asTimestamp 函数假定您指定的日期默认为UTC,并给出UTC时间值。

然而,

asDatetime 函数会另外考虑并获取系统时区,并以系统时区偏移量返回日期。

解决方案

你有几个选择,任何人都可以使用

  1. 在调用Yii::$app->formatter->timeZone = 'UTC';函数之前将yii格式化程序时区设置为utc asDatetime(如果需要,还可以设置回原始格式)。
  2. 在将时间戳传递给 asTimestamp 之前,请按时区偏移以将其转换为UTC。
  3. 获取asDatetime的结果后,按时区偏移以将其转换回UTC