In my setup setTimezone() does modify the date, as well as the TZ.
Code:
<?php
$dt_obj = new DateTime('2009-06-25 12:00:00');
echo $dt_obj->format(DATE_RFC822) . "\n";
$dt_obj->setTimezone(new DateTimeZone('GMT'));
echo $dt_obj->format(DATE_RFC822);
?>
Output:
Thu, 25 Jun 09 12:00:00 -0400
Thu, 25 Jun 09 16:00:00 +0000
DateTime::setTimezone
(PHP 5 >= 5.2.0)
DateTime::setTimezone — DateTime オブジェクトのタイムゾーンを設定する
説明
返り値
変更後の DateTime を返します。
例
例1 DateTimeZone オブジェクトの設定と取得
<?php
date_default_timezone_set('Europe/London');
$datetime = new DateTime('2008-08-03 12:35:23');
echo $datetime->getTimezone()->getName() . "\n";
$datetime = new DateTime('2008-08-03 12:35:23');
$la_time = new DateTimeZone('America/Los_Angeles');
$datetime->setTimezone($la_time);
echo $datetime->getTimezone()->getName();
?>
上の例の出力は以下となります。
Europe/London America/Los_Angeles
参考
- DateTime::getTimezone() - 指定した DateTime に関連するタイムゾーンを返す
- timezone_open() - 新しい DateTimeZone オブジェクトを返す
DateTime::setTimezone
dan dot morin at gmail dot com
26-Jun-2009 04:56
26-Jun-2009 04:56
sht dot alien at gmx dot net
17-Jun-2009 01:13
17-Jun-2009 01:13
Btw: setTimezone() does NOT modify the date, just the TZ. I tested this just to make sure 'cause the documentation doesn't tell.
