Digamos que tengo una fecha en el siguiente formato: 2010-12-11 (año-lunes-día)
Con PHP, quiero incrementar la fecha en un mes, y quiero que el año se incremente automáticamente, si es necesario (es decir, incrementando de diciembre de 2012 a enero de 2013).
Saludos.
Necesitaba una funcionalidad similar, excepto por un ciclo mensual (más meses, menos 1 día). Después de buscar SO por un tiempo, pude crear esta solución plug-n-play:
Ejemplo:
fuente
Utilice
DateTime::add
.Usé clon porque add modifica el objeto original, lo que podría no ser deseado.
fuente
esto devuelve una marca de tiempo que se puede usar con la función de fecha
fuente
$time
tiene un valor inicial).Esto compensará febrero y los otros meses de 31 días. Por supuesto, podría hacer muchas más comprobaciones para obtener más exactos para los formatos de fecha relativa de 'este día el próximo mes' (que lamentablemente no funciona, vea a continuación), y también podría usar DateTime.
Ambos
DateInterval('P1M')
ystrtotime("+1 month")
esencialmente están agregando ciegamente 31 días independientemente del número de días del mes siguiente.fuente
Puedes usar
DateTime::modify
así:Ver documentaciones:
http://php.net/manual/fr/datetime.modify.php
http://php.net/manual/fr/class.datetime.php
fuente
Yo uso de esta manera: -
fuente
Primero configure su formato de fecha como 12-12-2012
Después de usar esta función, funciona correctamente;
Aquí 12-12-2012 es su fecha y +2 meses es el incremento del mes;
También incrementa el año, la fecha
Ans es 12-12-2013
fuente
Gracias Jason, tu publicación fue muy útil. Lo reformateé y agregué más comentarios para ayudarme a entenderlo todo. En caso de que eso ayude a alguien, lo he publicado aquí:
fuente
Si quieres incrementar por días también puedes hacerlo
fuente
Simplemente actualice la respuesta con un método simple para encontrar la fecha después del número de meses. Como la mejor respuesta marcada no da la solución correcta.
fuente
Ejemplos de uso:
fuente
Para cualquiera que busque una respuesta a cualquier formato de fecha.
Simplemente cambie el formato de fecha.
fuente
ponga una fecha en el cuadro de entrada y luego haga clic en el botón obtener el día desde la fecha en jquery
fuente
fuente
Todas las soluciones presentadas no funcionan correctamente.
strtotime () y DateTime :: add o DateTime :: modified dan en algún momento resultados no válidos.
Ejemplos:
- 31.08.2019 + 1 mes da 01.10.2019 en lugar de 30.09.2019
- 29.02.2020 + 1 año da 01.03.2021 en lugar de 28.02.2021
(probado en PHP 5.5, PHP 7.3)
A continuación se muestra mi función basada en la idea publicada por Angelo que resuelve el problema:
Ejemplos de uso:
fuente