我正在尝试将当地时间转换为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
答案 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 />";