PHP将本地时间转换为UTC DateTime

时间:2016-05-05 13:14:15

标签: php codeigniter datetime

我想将本地时区dateTime转换为UTC时区DateTime。

date_default_timezone_set('Asia/Calcutta');
$datetime = "2016-05-05 18:33:00";
echo date_default_timezone_get()."<br>"; // Asia/Calcutta
date_default_timezone_set('UTC');
echo date_default_timezone_get()."<br>"; //UTC
echo $utcDateTime = date("Y-m-d H:i:s",strtotime($datetime));

当前输出

2016-05-05 18:33:00

但是,问题是不要将本地日期时间转换为UTC日期时间。它将输出作为Local DateTime。

3 个答案:

答案 0 :(得分:4)

在使用strtotime更改时区之前,您需要将日期传递给date_default_timezone_set。像这样:

date_default_timezone_set('Asia/Calcutta');
$datetime = "2016-05-05 18:33:00";
$asia_timestamp = strtotime($datetime);
echo date_default_timezone_get()."<br>"; // Asia/Calcutta
date_default_timezone_set('UTC');
echo date_default_timezone_get()."<br>"; //UTC
echo $utcDateTime = date("Y-m-d H:i:s", $asia_timestamp);

答案 1 :(得分:1)

如果我理解得很好,它应该有效:

$date = DateTime::createFromFormat('Y-m-d H:i:s', '2016-05-05 18:33:00');
# you could to pass in timezone too
# $date = DateTime::createFromFormat('Y-m-d H:i:s', '2016-05-05 18:33:00',
#     new DateTimeZone('America/Fortaleza'));

var_dump($date->setTimezone(new DateTimeZone('UTC')));

答案 2 :(得分:-1)

使用date helper

local_to_gmt($time = '');

// $gmt = local_to_gmt(time());
  

将UNIX时间戳作为输入并将其作为GMT返回。

Docs