2017-02-24 23 views
0

タイムゾーンによって時刻を変更しようとしています。私はDBから時刻とタイムゾーンを取得していますが、この時刻は2017-02-23 12:37:19のようになり、タイムゾーンはthis manual pageに従います。私はdatetimeが間違ったフォーマットを持っているとは思わない。しかし、問題は、それは私がそれを変換したいタイムゾーンに、DBタイムゾーンから時間を変換しないことです。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; 
関連する問題