2012-05-15 8 views
9

He aquí un ejemplo de las cadenas de fecha y hora que estoy trabajando:¿Cómo agregar una hora al tiempo de esta cadena de fecha y hora?

Tue May 15 10:14:30 +0000 2012 

Aquí está mi intento de añadir una hora en él:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('P1h')); 

Pero la segunda línea muestra el error que no podía' ser convertido.

Gracias.

Respuesta

46

Debe añadir un T antes de la parte especificación del tiempo:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('PT1H')); 

Consulte la documentación DateIntervalconstructor:

El formato comienza con la letra P, para el "período". Cada período de duración está representado por un valor entero seguido de un designador de período. Si la duración contiene elementos de tiempo, esa parte de la especificación es precedida por la letra T.

(Énfasis añadido)

+0

1 DateInterval. –

2

Usando strtotime():

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$time = strtotime($time) + 3600; // Add 1 hour 
$time = date('D M j G:i:s O Y', $time); // Back to string 
echo $time; 
8

respuestas anteriores funcionan. Sin embargo, generalmente uso la modificación de fecha y hora en mis sitios web alojados externamente. Consulte php manual para obtener más información. Con el código propuesto, que debería funcionar así:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->modify('+ 1 hour'); 

Para aquellos que no utilizan la orientación a objetos, sólo tiene que utilizar de esta manera (primera línea DateTime sólo para llevar somethng nuevo en este hilo, lo uso para comprobar el servidor tiempo):

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']); // convert UNIX epoch to PHP DateTime 
$dt = date_modify($dt, "+1 hour"); 

Best, siempre se prefiere

Cuestiones relacionadas