zona settimezone mexico horaria datetimezone date_default_timezone_set cambiar buenos america aires php datetime timezone

php - settimezone - timezone america buenos aires



¿Cómo convertir entre zonas horarias en PHP utilizando la clase DateTime? (3)

Cree la fecha usando la zona horaria local, luego llame a DateTime::setTimeZone() para cambiarla.

Estoy tratando de convertir el tiempo entre la hora actual a UTC y UTC a la zona horaria actual.

Esto es lo que hice:

$schedule_date = new DateTime($triggerOn, new DateTimeZone(''UTC'') ); $triggerOn = $schedule_date->format(''Y-m-d H:i:s''); echo $triggerOn;

El valor de salida no cambia la única cosa que cambia en formato.

la cadena $triggerOn se generó en base a la zona horaria America/Los_Angeles

Así es como mi cadena se ve antes y después:

BEFORE 04/01/2013 03:08 PM AFTER 2013-04-01 15:08:00

Entonces, el problema aquí es que DateTime no se convierte a UTC.


Está consumiendo la fecha / hora y configurando la zona horaria correctamente; sin embargo, antes de formatear la fecha y hora, no está configurando la zona horaria de salida deseada. Aquí hay un ejemplo que acepta una zona horaria UTC y convierte la fecha / hora en la zona horaria América / Los_Angeles:

<?php $original_datetime = ''04/01/2013 03:08 PM''; $original_timezone = new DateTimeZone(''UTC''); // Instantiate the DateTime object, setting it''s date, time and time zone. $datetime = new DateTime($original_datetime, $original_timezone); // Set the DateTime object''s time zone to convert the time appropriately. $target_timezone = new DateTimeZone(''America/Los_Angeles''); $datetime->setTimeZone($target_timezone); // Outputs a date/time string based on the time zone you''ve set on the object. $triggerOn = $datetime->format(''Y-m-d H:i:s''); // Print the date/time string. print $triggerOn; // 2013-04-01 08:08:00


Lo que estás buscando es esto:

$triggerOn = ''04/01/2013 03:08 PM''; $user_tz = ''America/Los_Angeles''; echo $triggerOn; // echoes 04/01/2013 03:08 PM $schedule_date = new DateTime($triggerOn, new DateTimeZone($user_tz) ); $schedule_date->setTimeZone(new DateTimeZone(''UTC'')); $triggerOn = $schedule_date->format(''Y-m-d H:i:s''); echo $triggerOn; // echoes 2013-04-01 22:08:00