时区转换:在PHP中使用DateTimeZone,输出提前一小时

时间:2016-01-08 20:33:14

标签: php datetime

我有一个小功能:

public static function date($input = 'now', $format = 'Y-m-d H:i', $tzFrom, $tzTo) {

        $date = date_create($input, new DateTimeZone($tzFrom))->setTimezone(new DateTimeZone($tzTo));

        if ($format == 'TS') {
            return strtotime($date->format('Y-m-d H:i'));
        }

        return $date->format($format);
}

这是它的输出:

echo '<br>' . DT::date('now', 'TS', 'America/Los_Angeles', 'UTC'); // 1452281400
This is:
1452281400 -> Fri, 08 Jan 2016 19:30:00

但这是错误的,因为当前的UTC时间:2016年1月8日星期五20:30:00,而不是19:30:00。

额外1小时在哪里?我该如何修复我的功能? 谢谢!

1 个答案:

答案 0 :(得分:0)

function convert_time($timestring,$format="Y-m-d H:i:s",$from,$to){
    $default = date_default_timezone_get(); // get default to reset
    date_default_timezone_set($from); // set the `from` timezone
    $the_date = strtotime($timestring); // given string to time
    date_default_timezone_set($to);  // given string to required zone
    $req_date = date($format,$the_date); // required date in required format
    date_default_timezone_set($default); // reset to default
    return $req_date;
}

希望这有帮助