DateTime オブジェクトから、さまざまな TimeZones の時刻を取得することに興味があります。DateTime::setTimezone doc で説明されているように、DateTime オブジェクトが文字列から作成されている場合、これは非常にうまく機能します。
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:sP') . "\n";
echo $date->getTimestamp() . "\n";
上記の例では、次のように出力
さ
れ
ます
。
ここが興味深い部分です。タイムスタンプを取得し、手動の指示に従ってそれを使用して DateTime オブジェクトを開始します。
$date2 = new DateTime('@946641600');
$date2->setTimezone(new DateTimeZone('Pacific/Nauru'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
$date2->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
$date2->setTimezone(new DateTimeZone('UTC'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
echo $date2->getTimestamp() . "\n";
// [編集] うーん... 申し訳ありませんが、この出力は間違っています...
1999-12-31 12:00:00+00:00
1999-12-31 12:00:00+00: 00
1999-12-31 12:00:00+00:00
946641600
UTC 永遠に!!! タイムゾーンはもう変更できません!?!
それはPHPですか、それとも私ですか?バージョン 5.3.15