Hay mucha información sobre cómo hacer ajustes de zona horaria en PHP, pero no he encontrado una respuesta específica para lo que quiero hacer debido a todo el ruido.Ajuste de la zona horaria en PHP con DateTime/DateTimeZone
Dado un tiempo en una zona horaria, quiero convertirlo a la hora en otra zona horaria.
This es básicamente lo que quiero hacer, pero necesito poder hacerlo utilizando solo las librerías PHP incorporadas, no la fecha PEAR.
Esto es lo que he estado haciendo, pero me parece dar siempre el desplazamiento relativo a GMT:
$los_angeles_time_zone = new DateTimeZone('America/Los_Angeles');
$hawaii_time_zone = new DateTimeZone('Pacific/Honolulu');
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$time_offset = $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
Ésta es la salida:
LA Hora: 2009-09 -18T05: 00: 00-07: 00
Offset: -36000
que estaba esperando 3 horas (10800 segundos). pero la cosa '-7: 00' me dice que mantiene todo lo relativo a GMT, lo que tal vez explique por qué me está dando el offset "absoluto".
¿Cómo obtengo el desplazamiento entre las dos zonas horarias sin todo este GMT hoohah?
Gracias.
ACTUALIZACIÓN:
me ocurrió a mí que yo podía hacer esto y conseguir lo que quiero:
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$date_time_hawaii = new DateTime('2009-09-18 05:00:00', $hawaii_time_zone);
printf("Hawaii Time: %s<br/>", $date_time_hawaii->format(DATE_ATOM));
$time_offset = $los_angeles_time_zone->getOffset($date_time_los_angeles) - $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
pero se siente incómodo para mí. ¿Alguien sabe una manera más limpia de hacerlo?
Dicho sea de paso :), estos son para PHP> = 5.3.0. – GZipp
No parecen tener en cuenta el horario de verano. Estoy usando las funciones anteriores para convertir CST en GMT y todos mis tiempos están fuera por 1 hora. –