Ayuda con fecha

Hola nuevamente... Soy la persona que ayudastes con el tema del calculo de cuotas...
Tengo la siguiente función que encontré para calcular la fecha de pago de cada cuota a partir de un nuevo campo del formulario al que llame txtvencim donde ingreso manualmente el vencimiento de la primera cuota, necesito que la fecha de las demás cuotas sea los 30 de cada mes o el mismo día de cada mes:
function sumaDia($fecha,$dia)
{
list($day,$mon,$year) = explode('/',$fecha);
return date('d/m/Y',mktime(0,0,0,$mon,$day+$dia,$year));
}
for ($i=1;$i<=$txtcuotas;$i++)
{
echo "
<tr>
<td align=left> $i</td>
";
echo "
<td align=left>".$txtvencim."</td>
";
$txtvencim=sumaDia($txtvencim,30);
Resulta bien, el problema es que me da los siguientes resultados como ej.- el vencimiento de la primera cuota 30/08/2008:
1 30/08/2008 166000 ......
2 29/09/2008 166000....
3 28/10/2008 166000...
Qués estoy haciendo mal... Tienes otra forma de solucionarlo.. Muchas Gracias.

1 respuesta

Respuesta
1
Dejando de lado que los meses no tienen todos el mismo número de días y sumar 30 sucesivamente te dará resultados muy divertidos, si vence todos los meses el mismo día, ¿por qué mosquis calculas el día? El día 28 será 28 siempre, otra cosa es que un 30 de abril no tiene equivalente en un 30 de febrero, pero con ajustar todas las cuotas como máximo al 28 del mes lo tienes solucionado para todos los años posibles (de hecho mi hipoteca es así la firme un 30 pero vence todos los 28).
Tienes toda la razón... Especialmente lo de febrero, en realidad lo que quise decir es que sea el ultimo día hábil de cada, a partir de la fecha de la primera cuota, es decir, si la primera fecha es un día 30/06/2009, todas las demás cuotas sean el mismo día 30 de cada mes... Ahora si es un día 30, me imagino que existe alguna forma de determinar el ultimo día de cada mes, ¿para qué así el sistema no cometa el error de crear un 30/02,... saber como hacer eso?... Ojala que si y puedas orientarme...
Gracias nuevamente por tu tiempo...
Puedes comprobar si una fecha es correcta con la función checkdate()
http://www.tutores.org/?codigo=1511&Validacion-de-fechas---checkdate()
En tu código tendrás antes de usar la fecha comprobar si es válida, si es un 30 de febrero por ejemplo te dirá que no lo es, en ese caso resta un día a la fecha y vuelve a probar, así hasta que sea válida. Con esto salvas febrero y los meses 30 para vencimientos 31,30 y 29 (dichoso febrero).
Hola nuevamente, feliz seguir avanzando gracias a tu valiosa ayuda... espero no causarte molestias con tanta pregunta..., ya que volveré... jejejejejeej

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas