Primero, debe crear una instancia del objeto de fecha y hora con la zona horaria original. Luego, después de instanciar el objeto de fecha y hora, ajuste la zona horaria con DateTime::setTimezone()
.
Vea este código, donde he usado Asia/Hong_Kong
como ejemplo GMT+8 zona horaria:
$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
Si todas las fechas originales siempre significan GMT+8 y su aplicación PHP también está configurada para usar GMT+8 (configurada con date_default_timezone_set()
, por ejemplo), no es necesario pasar el DateTimeZone
inicial objeto, como DateTime
recién creado los objetos se crearán automáticamente con esa zona horaria.