with texto strip_tags remove limpiar from eliminar allow all php date datetime

php - texto - Agregar un día a una fecha



string strip_tags (10)

Mi código para agregar un día a una fecha devuelve una fecha anterior al día en que se agrega: 2009-09-30 20:24:00 fecha después de agregar un día DEBE pasar al siguiente mes: 1970-01-01 17:33:29

<?php //add day to date test for month roll over $stop_date = date(''Y-m-d H:i:s'', strtotime("2009-09-30 20:24:00")); echo ''date before day adding: ''.$stop_date; $stop_date = date(''Y-m-d H:i:s'', strtotime(''+1 day'', $stop_date)); echo '' date after adding one day. SHOULD be rolled over to the next month: ''.$stop_date; ?>

He usado código bastante similar antes, ¿qué estoy haciendo mal aquí?


Aunque estoy de acuerdo con la respuesta de Doug Hays, repito aquí para decir que la razón por la que su código no funciona es porque strtotime() espera una INT como el segundo argumento, no una cadena (incluso una que represente una fecha)

Si activa el informe de error máximo, verá esto como un error de "valor numérico no formado correctamente" que es el nivel E_NOTICE.


El método modify() que se puede usar para agregar incrementos a un valor DateTime existente.

Cree un nuevo objeto DateTime con la fecha y hora actuales:

$due_dt = new DateTime();

Una vez que tenga el objeto DateTime , puede manipular su valor agregando o restando períodos de tiempo:

$due_dt->modify(''+1 day'');

Puedes leer más en el Manual de PHP .


El siguiente código se obtiene el primer día de enero del año actual (pero puede ser otra fecha) y agrega 365 días a ese día (pero puede ser N número de días) utilizando la clase DateTime y su método modify () y formato ( )

echo (new DateTime((new DateTime())->modify(''first day of January this year'')->format(''Y-m-d'')))->modify(''+365 days'')->format(''Y-m-d'');


Funcionó para mí: para la fecha actual

$date = date(''Y-m-d'', strtotime("+1 day"));

para cualquier fecha:

date(''Y-m-d'', strtotime("+1 day", strtotime($date)));


La solución más simple:

$date = new DateTime(''+1 day''); echo $date->format(''Y-m-d H:i:s'');


Prueba esto

echo date(''Y-m-d H:i:s'',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));


Siempre agrego 86400 (segundos en un día):

$stop_date = date(''Y-m-d H:i:s'', strtotime("2009-09-30 20:24:00") + 86400); echo ''date after adding 1 day: ''.$stop_date;

No es la manera más hábil en la que probablemente podrías hacerlo, ¡pero funciona!


Simple de leer y entender la forma:

$original_date = "2009-09-29"; $time_original = strtotime($original_date); $time_add = $time_original + (3600*24); //add seconds of one day $new_date = date("Y-m-d", $time_add); echo $new_date;


$date = new DateTime(''2000-12-31''); $date->modify(''+1 day''); echo $date->format(''Y-m-d'') . "/n";


<?php $stop_date = ''2009-09-30 20:24:00''; echo ''date before day adding: '' . $stop_date; $stop_date = date(''Y-m-d H:i:s'', strtotime($stop_date . '' +1 day'')); echo ''date after adding 1 day: '' . $stop_date; ?>

Para PHP 5.2.0+, también puede hacer lo siguiente:

$stop_date = new DateTime(''2009-09-30 20:24:00''); echo ''date before day adding: '' . $stop_date->format(''Y-m-d H:i:s''); $stop_date->modify(''+1 day''); echo ''date after adding 1 day: '' . $stop_date->format(''Y-m-d H:i:s'');