Duplicar posibles:
PHP DateTime::modify adding and subtracting monthsCómo añadir al menos 1 mes en una fecha sin saltar a saber, febrero
tengo una fecha de inicio (es decir 2011-01-30) y desea agregar 1 mes.
El problema está en definir qué es un mes. Así que si uso el siguiente código:
$d1 = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-30 15:57:57');
$d1->add(new DateInterval('P1M'));
echo $d1->format('Y-m-d H:i:s');
me sale el siguiente resultado: 2011-03-02 15:57:57
El problema es que lo necesito para usar las siguientes reglas:
- Si agrego 1 mes se acaba de añadir al menos 1 mes de parte y dejar la parte del día (2011-01-15 se convertirá 2011-02-15)
- Si el día no está vigente en el mes vamos a terminar, tomamos el último día existente de (2011-01-30 se convertirá en 2011-02-28)
¿Hay una función común en php que pueda hacer esto o tengo que codificarlo solo? ¡¿Tal vez me falta un parámetro o algo así ?!
Si está iterando varios meses, deberá tener cuidado de no quedarse "atascado" el día 28. por ejemplo, si comienza a las 1/30 .. 2/28 .. 3/28, cuando probablemente quiera 3/30. – Matthew
Recientemente he tratado con esto implementando un sistema de facturación comercial. No hay una solución precocida. Debe hacer un seguimiento de su día de inicio, incrementar el mes, ver si ese día existe el mes siguiente, si no, usar el último día del mes. En realidad no es terriblemente complicado, pero se sentirá como que no debería tener que escribir tanto código. – Endophage
El requisito aquí es agregar * meses calendario *. Salte al 1 ° del mes, agregue los meses que desee y luego regrese al número del día en que comenzó el * o * último día del nuevo mes si el mes está corto del número del día inicial. – Jason