我想将本地时区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。
答案 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)