2017-02-24 117 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;