$placename=timezone_name_from_abbr("", $timezone * 3600, false);
$date = date_create($list['stamp'], timezone_open($placename));
$datetimezone=new DateTimeZone('Europe/London');
$dateTime = new DateTime($list['stamp'],$datetimezone);
$dateTime->setTimeZone(new DateTimeZone($placename));
編集
答えとして提案された次のコードを試してみたところ、本来あるべき時間から2時間遅れた時間が生成されました。データベースを確認したところ、DB の時刻が GMT と一致しました。問題は、変換を使用してGMTから変換することです
$timezone=-4
以下のユーザーの回答からのコードは、2時間ずれている時間を生成します。GMT から America/New_York に変換しますが、2 時間遅くなります。placename 変数を調べて、America/New_York であることを確認しました。何が原因でしょうか?
$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$dateTime = new DateTime($list['stamp']);
$dateTime->setTimeZone(new DateTimeZone($placename));
echo $dateTime->format('F d g:i a');
元の質問
America/New_York 時間に変換する代わりに、データベースに保存した UTC 時間を生成しました。これはなぜですか。時間を変換しなかったのはなぜですか? としてdbに保存されます2012-05-13 07:30:47
$placename=timezone_name_from_abbr("", $timezone * 3600, true);
$date = date_create($list['stamp'], timezone_open($placename));
echo date_format($date, 'F d g:i a');