2017-02-24 114 views
0

我试图根据时区更改时间。我从DB获取时间和时区,时间看起来像这样2017-02-23 12:37:19和时区根据this manual page。我不认为日期时间有错误的格式。但问题是,它不会将时间从数据库时区转换为我想要转换它的时区。使用DateTime更改时区不会更改它

$time = new DateTime($user['date'], new DateTimeZone($user['timezone'])); 
$user['date'] = $time->format('Y-m-d H:i:s'); 
+1

你从来没有真正改变时区。您只能将其设置为您已有的日期。 –

+0

我可以得到一个提示,我如何从不同的时区返回时间?我似乎无法在文档中找到它 – jemcaj

+2

[DateTime :: setTimeZone()](http://php.net/manual/en/datetime.settimezone.php) –

回答

1

这里是一个办法做下去。

$time = new DateTime($user['date'], new DateTimeZone($dbTimeZone)); 
//use $dbTimeZone as the timezone from which you want to convert to your user timezone 

$time->setTimezone(new DateTimeZone($user['timezone'])); 

$user['date'] = $time->format('Y-m-d H:i:s'); 
1

,你可以将时区设置,试试这个:

$user['timezone'] = 'Europe/Berlin'; 
$user['date'] = '2017-02-24 10:24:08'; 
$dbTimeZone = 'America/Vancouver'; 
$date = new \DateTime($user['date'], new \DateTimeZone($user['timezone'])); 
$date->setTimezone(new \DateTimeZone($dbTimeZone)); 
$sConvertedDate = $date->format('Y-m-d H:i:s'); 
echo $sConvertedDate;