2011-04-21 34 views

Respuesta

108

de PHP es bastante flexible.

$UTC = new DateTimeZone("UTC"); 
$newTZ = new DateTimeZone("America/New_York"); 
$date = new DateTime("2011-01-01 15:00:00", $UTC); 
$date->setTimezone($newTZ); 
echo $date->format('Y-m-d H:i:s'); 
+1

Gracias. Esto funciona genial – amax

+1

Kevin, tú hombre! – cj5

+0

Esto es todo. ¡Lo hiciste! –

-2

¿Qué tal: DateTime objeto

$timezone = new DateTimeZone('UTC'); 
$date = new DateTime('2011-04-21 13:14', $timezone); 
echo $date->format; 
+1

Esto no funcionó – amax

+0

'$ fecha-> formato()' requiere 1 parámetro. Ver [esto] (http://php.net/manual/en/datetime.format.php) – Raptor

+0

$ date = new DateTime ('2011-04-21 13:14', $ timezone) ¿No le falta esto? segundos para UTC? – Quadrivium

1

Suponiendo que el UTC no está incluido en la cadena a continuación:

date_default_timezone_set('America/New_York'); 
$datestring = '2011-01-01 15:00:00'; //Pulled in from somewhere 
$date = date('Y-m-d H:i:s T',strtotime($datestring . ' UTC')); 
echo $date; //Should get '2011-01-01 10:00:00 EST' or something like that 

o puede utilizar el objeto DateTime.

1
function _settimezone($time,$defaultzone,$newzone) 
{ 
$date = new DateTime($time, new DateTimeZone($defaultzone)); 
$date->setTimezone(new DateTimeZone($newzone)); 
$result=$date->format('Y-m-d H:i:s'); 
return $result; 
} 

$defaultzone="UTC"; 
$newzone="America/New_York"; 
$time="2011-01-01 15:00:00"; 
$newtime=_settimezone($time,$defaultzone,$newzone); 
2

El objeto DateTime de PHP es bastante flexible.

Como el usuario pidió más de una opción de zona horaria, puede hacer que sea genérica.

función genérica

function convertDateFromTimezone($date,$timezone,$timezone_to,$format){ 
$date = new DateTime($date,new DateTimeZone($timezone)); 
$date->setTimezone(new DateTimeZone($timezone_to)); 
return $date->format($format); 
} 

Uso:

echo convertDateFromTimezone('2011-04-21 13:14','UTC','America/New_York','Y-m-d H:i:s'); 

Salida:

2011-04-21 09:14:00

0

Función de normalización de propósito general para formatear cualquier marca de tiempo de cualquier zona horaria a otra. Muy útil para almacenar la fecha y hora de los usuarios de diferentes zonas horarias en una base de datos relacional. Para tienda de comparaciones de bases de datos de marca de hora como UTC y utilizar con gmdate('Y-m-d H:i:s')

/** 
* Convert Datetime from any given olsonzone to other. 
* @return datetime in user specified format 
*/ 

function datetimeconv($datetime, $from, $to) 
{ 
    try { 
     if ($from['localeFormat'] != 'Y-m-d H:i:s') { 
      $datetime = DateTime::createFromFormat($from['localeFormat'], $datetime)->format('Y-m-d H:i:s'); 
     } 
     $datetime = new DateTime($datetime, new DateTimeZone($from['olsonZone'])); 
     $datetime->setTimeZone(new DateTimeZone($to['olsonZone'])); 
     return $datetime->format($to['localeFormat']); 
    } catch (\Exception $e) { 
     return null; 
    } 
} 

Uso:

$from = ['localeFormat' => "d/m/Y H:i A", 'olsonZone' => 'Asia/Calcutta']; 

$to = ['localeFormat' => "Y-m-d H:i:s", 'olsonZone' => 'UTC']; 

datetimeconv("14/05/1986 10:45 PM", $from, $to); // returns "1986-05-14 17:15:00" 
Cuestiones relacionadas