2011-03-28 20 views
8

soy nuevo en php. Quiero escribir una función donde necesito que el usuario ingrese la fecha en cualquier formato de fecha, incluido el horario de verano, en formato GMT y de nuevo más tarde en el formato original ingresado. Por favor, cualquier cuerpo me ayude.cómo convertir formatos de fecha php a GMT y viceversa?

+0

leer el manual de php para [fecha] (http://in2.php.net/manual/en/function.date.php) y el ejemplo dado allí – diEcho

Respuesta

23

Aunque las funciones gmdate están disponibles. Si está utilizando PHP 5.2 o superior, entonces considere usar el objeto DateTime.

Aquí está el código para cambiar a GMT

$date = new DateTime(); 
$date->setTimezone(new DateTimeZone('GMT')); 

y de nuevo a la zona horaria por defecto ...

$date = new DateTime('2011-01-01', new DateTimeZone('GMT')); 
$date->setTimezone(new DateTimeZone(date_default_timezone_get())); 

Utilizando el objeto DateTime permite al crear una fecha y hora, al igual que el procedimiento funciones, excepto que mantiene una referencia a una instancia.

p. Ej.

// Get a reference to Christmas of 2011, at lunch time. 
$date = new DateTime('2011-12-25 13:00:00'); 

// Print the date for people to see, in whatever format we specify. 
echo $date->format('D jS M y'); 

// Change the timezone to GMT. 
$date->setTimezone(new DateTimeZone('GMT')); 

// Now print the date/time it would in the GMT timezone 
// as opposed to the default timezone it was created with. 
echo $date->format('Y-m-d H:i:s'); 

// Just to show of some more, get the previous Sunday 
$date->modify('previous Sunday'); 

Hay un montón de funciones que puede usar, que son mucho más legibles que las funciones de procedimiento.


ejemplo explícito de la conversión de una zona horaria a GMT

$melbourne = new DateTimeZone('Australia/Melbourne'); 
$gmt = new DateTimeZone('GMT'); 

$date = new DateTime('2011-12-25 00:00:00', $melbourne); 
$date->setTimezone($gmt); 
echo $date->format('Y-m-d H:i:s'); 
// Output: 2011-12-24 13:00:00 
// At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT. 

echo '<br/>'; 

// Convert it back to Australia/Melbourne 
$date->setTimezone($melbourne); 
echo $date->format('Y-m-d H:i:s'); 

Uso del Asia/Calcuta a América/New_York

date_default_timezone_set('Asia/Kolkata'); 
$date = new DateTime('2011-03-28 13:00:00'); 
$date->setTimezone(new DateTimeZone('America/New_York')); 
echo $date->format("Y-m-d H:i:s"); 
//Outputs: 2011-03-28 03:30:00 
+0

gracias jcob ...... pero por favor puedes publicar un ejemplo cómo funciona exactamente ............ – 0001

+1

@ 0001 actualizado con algunos ejemplos. – Jacob

+0

muchas gracias jcob ...... pero me estoy confundiendo aquí ... ¿cómo me ayudará tu ejemplo en mi pregunta ...... ?? – 0001

4

Utilice gmdate function para convertir a la hora GMT.

Por ejemplo

$d = '2011-03-28 12:05:20'; 
$gmt = gmdate('Y-m-d H:i:s',strtotime($d)); 
+0

cuando le doy la fecha como '2013-07-03 16:00 IST ', me estoy equivocando fecha – lalith458

0

// Convertir la hora local a GMT

public function convertTime($timezone,$time){ 
     $selectedtime = date("Y-m-d H:i",strtotime($time)); 
     $date = new DateTime($selectedtime, new DateTimeZone($timezone)); 
     $date->setTimezone(new DateTimeZone('GMT')); 
     $convertedtime = strtotime($date->format('Y-m-d H:i')); 
     return $convertedtime; 
    } 
Cuestiones relacionadas