Mi código para agregar un día a una fecha devuelve una fecha antes de agregar el día: la
2009-09-30 20:24:00
fecha después de agregar un día DEBERÍA pasar al mes siguiente: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 un código bastante similar antes, ¿qué estoy haciendo mal aquí?
date('Y-m-d H:i:s', strtotime($stop_date . ' + 1 day'));
como en la respuesta que @ w35l3y te dio.fuente
La solución más simple:
fuente
echo (new DateTime('+1 day'))->format('Y-m-d H:i:s');
Unexpected T_OBJECT_OPERATOR” error in PHP
A mí me funcionó: para la fecha actual
para cualquier fecha:
fuente
strtotime()
- que puede manejar todo en una sola llamada:date('Y-m-d', strtotime($date . " +1 day"));
Prueba esto
fuente
Fácil de leer y entender:
fuente
Siempre agrego 86400 (segundos en un día):
No es la forma más hábil en la que probablemente puedas hacerlo, ¡pero funciona!
fuente
Si bien estoy de acuerdo con la respuesta de Doug Hays, intervino aquí para decir que la razón por la que su código no funciona es porque strtotime () espera un 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 "Un valor numérico no bien formado" que es el nivel E_NOTICE.
fuente
El
modify()
método que se puede usar para agregar incrementos a unDateTime
valor existente .Cree un nuevo
DateTime
objeto con la fecha y hora actuales:Una vez que tenga el
DateTime
objeto, puede manipular su valor sumando o restando períodos de tiempo:Puedes leer más en el Manual PHP .
fuente
El siguiente código 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) usando la clase DateTime y su método modify () y format ( ):
fuente
Dado que ya tiene una respuesta a lo que está mal con su código, puedo brindarle otra perspectiva sobre cómo puede jugar con fechas y horas en general, y resolver su problema específicamente.
A menudo te encuentras planteando un problema en términos de solución. Esta es solo una de las razones por las que terminas con un código imperativo . Sin embargo, es genial si funciona; hay otras alternativas, posiblemente más mantenibles. Uno de ellos es un código declarativo . El punto es preguntar qué necesitas, en lugar de cómo llegar allí.
En su caso particular, esto puede parecerse a lo siguiente. Primero, necesitas descubrir qué es lo que estás buscando, es decir, descubrir abstracciones. En su caso, parece que necesita una cita . No cualquier fecha, sino la que tiene alguna representación estándar. Digamos, fecha ISO8601. Hay al menos dos implementaciones: la primera es una fecha analizada desde una cadena con formato ISO8601 (o una cadena en cualquier otro formato en realidad), y la segunda es una fecha futura que es un día después. Por lo tanto, todo el código podría verse así:
Para obtener más ejemplos con malabares de fecha y hora, consulte este .
fuente