2010-11-15 25 views
12

Tengo una marca de tiempo que el usuario ingresa en GMT.Convertir marca de tiempo en zonas horarias

Después me gustaría mostrar que la marca de tiempo en GMT, CET, pst, est.

Gracias al post de abajo he hecho, que funciona a la perfección!

public static function make_timezone_list($timestamp, $output='Y-m-d H:i:s P') { 

    $return  = array(); 
    $date  = new DateTime(date("Y-m-d H:i:s", $timestamp)); 
    $timezones = array(
     'GMT' => 'GMT', 
     'CET' => 'CET', 
     'EST' => 'EST', 
     'PST' => 'PST' 
    ); 

    foreach ($timezones as $timezone => $code) { 
     $date->setTimezone(new DateTimeZone($code)); 
     $return[$timezone] = $date->format($output); 
    } 
    return $return; 
} 
+0

Busca las desviaciones de la zona horaria relativas a GMT y agrégalas a tu marca de tiempo actual en GMT. – Gumbo

+0

respuesta perfecta para la zona horaria ... http://stackoverflow.com/a/3905222/1266559 – Magefast

+0

Llegó aquí a través de Google. El ejemplo en su pregunta es el mismo que la respuesta aceptada (usa DateTIme), no entiendo cuál es la pregunta ya que usted dice "Funciona a la perfección". Además, no entiendo por qué aceptó una respuesta que está haciendo exactamente lo mismo que el código en su pregunta. – mastazi

Respuesta

32

Puede utilizar PHp 5's DateTime class. Permite un control muy detallado sobre la configuración y la salida de Timezone. Remezclado desde el manual:

$timestamp = .......; 


$date = new DateTime("@".$timestamp); // will snap to UTC because of the 
             // "@timezone" syntax 

echo $date->format('Y-m-d H:i:sP') . "<br>"; // UTC time 

$date->setTimezone(new DateTimeZone('Pacific/Chatham')); 
echo $date->format('Y-m-d H:i:sP') . "<br>"; // Pacific time 

$date->setTimezone(new DateTimeZone('Europe/Berlin')); 
echo $date->format('Y-m-d H:i:sP') . "<br>"; // Berlin time  
+0

¿Esto manejará el ahorro de luz diurna también? O no tenemos que preocuparnos por eso, solo se necesita la diferencia de tiempo. – zod

+0

@zod también manejará el horario de verano. –

+1

ateTime :: __ construct() [datetime.--construct]: Error al analizar la cadena de tiempo (1438929689) en la posición 8 (8): carácter inesperado –

Cuestiones relacionadas