Първо, трябва да инстанцирате обекта datetime с оригиналната часова зона. След това, след като обектът datetime бъде инстанциран, коригирайте часовата зона с DateTime::setTimezone()
.
Вижте този код, където използвах Asia/Hong_Kong
като примерна часова зона GMT+8:
$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
Ако всички оригинални дати винаги се означават последователно като GMT+8 и вашето PHP приложение е настроено да използва и GMT+8 (задайте с date_default_timezone_set()
, например), няма нужда да предавате първоначалния DateTimeZone
обект, като новосъздадено DateTime
обектите ще бъдат създадени автоматично с тази часова зона.