Nejprve musíte vytvořit instanci objektu datetime s původním časovým pásmem. Poté po vytvoření instance objektu datetime upravte časové pásmo pomocí DateTime::setTimezone()
.
Viz tento kód, kde jsem použil Asia/Hong_Kong
jako příklad GMT+8 časové pásmo:
$time = "2012-11-07 15:05:26"; // fetch from database
$date = new DateTime($time,new DateTimeZone('Asia/Hong_Kong'));
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
echo $date->format('Y-m-d H:i:s'); // yields 2012-11-07 08:05:26
Pokud jsou všechna původní data vždy konzistentně míněna jako GMT+8 a vaše aplikace PHP je nastavena tak, aby používala také GMT+8 (nastaveno pomocí date_default_timezone_set()
), není třeba zadávat počáteční DateTimeZone
objekt, jako nově vytvořený DateTime
objekty budou automaticky vytvořeny s tímto časovým pásmem.