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