¿Cómo agregar una hora a la hora de esta cadena de fecha y hora?

1 minuto de lectura

Aquí hay un ejemplo de las cadenas de fecha y hora con las que estoy trabajando:

Tue May 15 10:14:30 +0000 2012

Aquí está mi intento de agregarle una hora:

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

Pero la segunda línea da el error de que no se pudo convertir.

Gracias.

avatar de usuario
Jon

Deberías agregar un T antes de la parte de especificación de tiempo:

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

Ver el DateInterval constructor documentación:

El formato comienza con la letra P, de “punto”. Cada período de duración está representado por un valor entero seguido de un indicador de período. Si la duración contiene elementos de tiempo, esa parte de la especificación es precedido por la letra T.

(Énfasis añadido)

avatar de usuario
Marino Linaje

Las respuestas anteriores funcionan bien. Sin embargo, generalmente uso la modificación de fecha y hora en mis sitios web alojados externamente. Controlar manual de php para más información. Con el código propuesto, 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 usan la orientación a objetos, solo úsenlo de esta manera (primera línea DateTime solo para traer algo nuevo a este hilo, lo uso para verificar la hora del servidor):

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

Mejor,

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;

¿Ha sido útil esta solución?