可以在PHP中将我的本地时间转换为UTC

时间:2017-06-14 20:59:09

标签: php

我正在尝试将当地时间转换为UTC。我的代码示例是:

$s = '2017-06-08T18:00:00.000Z';

$d = new \DateTime($s, new \DateTimeZone('Asia/Vladivostok'));
print_r($d->getTimeZone());
$d = $d->setTimeZone(new \DateTimeZone('UTC'));
print_r($d->getTimeZone());
echo $d->format('Y-m-d H:i:s') . "\r\n";

但是我在刚创建的日期时间上有无效的时区,转换同时返回我。

输出:

DateTimeZone Object
(
    [timezone_type] => 2
    [timezone] => Z
)
DateTimeZone Object
(
    [timezone_type] => 3
    [timezone] => UTC
)
2017-06-08 18:00:00

我可以在创建

后设置时区

$s = '2017-06-08T18:00:00.000Z';

$d = new \DateTime($s, new \DateTimeZone('Asia/Vladivostok'));

//  Added
$d->setTimeZone(new \DateTimeZone('Asia/Vladivostok'));

print_r($d->getTimeZone());
$d = $d->setTimeZone(new \DateTimeZone('UTC'));
print_r($d->getTimeZone());
echo $d->format('Y-m-d H:i:s') . "\r\n";

但它没有帮助,我有正确的时区,但时间是一样的。

DateTimeZone Object
(
    [timezone_type] => 3
    [timezone] => Asia/Vladivostok
)
DateTimeZone Object
(
    [timezone_type] => 3
    [timezone] => UTC
)
2017-06-08 18:00:00

2 个答案:

答案 0 :(得分:3)

您可以使用DateTimeZone对象更改时区。这是一个例子:

// INIT TIMEZONE OBJECTS
$utcTime = new DateTimeZone("UTC");
$yourTime = new DateTimeZone("Asia/Vladivostok");

// CREATE DATA WITH YOUR TIMEZONE
$date = new DateTime("2017-01-01 15:00:00", $yourTime);

// ADJUST TIMEZONE TO UTC
$date->setTimezone( $utcTime );

// PRINT
echo $date->format('Y-m-d H:i:s');

答案 1 :(得分:0)

您可以使用date_default_timezone_set()和date_default_timezone_get()函数来实现此目的。

$date = strtotime("2017-06-15 00:00:00");
echo date_default_timezone_get() . "<br />";
echo date("Y-d-mTG:i:sz",$date) . "<br />";
echo date_default_timezone_set("UTC") . "<br />";
echo date("Y-d-mTG:i:sz", $date) . "<br />";