1

PHP の dateTime および dateTimezone オブジェクトについて学び始めます。サーバーが米国/東部にあり、別のタイムゾーンで時刻を作成すると仮定すると、目標は、サーバー (米国/東部) の時刻 (つまりロンドン) をサーバー時間に変換して保存することです。このコードの使用:

$runTime = '2013-04-10 07:45:00';
$serverTimezone = new DateTimeZone ( 'US/Eastern');
$checkinTimezone = new DateTimeZone ( 'Europe/London');
$checkinTime = new DateTime ( $runTime, $serverTimezone );

$offset = $serverTimezone -> getOffset ( $checkinTime );

echo "<br/><pre>";
echo 'London: ' . date ( 'Y-m-d H:i', $checkinTime -> format ( 'U' ) ) . "<br/>";
echo "<br/>offset: " . $offset . "<br/>";
echo 'Local: ' . date ( 'Y-m-d H:i', $checkinTime -> format ( 'U' ) + $offset );

-14400 は、今日の前後にかかわらず、常に返されます (ヨーロッパは今日、DST に切り替わりました)。あっと言う間に、getOffset のドキュメントに次のように書かれていることがわかりReturns the timezone offset from GMTました。

その時間を米国/東部に変換する簡単な方法はありますか? getTransitions にアクセスして、DST が始まる日を見つけ、手動で計算する必要がありますか? これは、各春/秋の切り替えの初日にのみ重要です。

4

1 に答える 1