Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/09/2011, 17:48
Avatar de Middrel
Middrel
 
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Añadir días a una fecha en AS 2.0

Se me ocurrió hacer esto:

Código:
vencimiento = function(plazo) {  
/* Declaro las variables y convierto las de tipo fecha en tipo numérico */
	var fechav:Date = new Date();
	var fechastr:String = (fechav.getDate() + "/" + (fechav.getMonth()+1) + "/" + fechav.getFullYear());
	var vencim:Number  = Number(fechav.getDate());
	var vencimd:Number = Number(fechav.getDate()) + Number(plazo); 
	var vencimm:Number = Number(fechav.getMonth()+1); 
	var vencima:Number = Number(fechav.getFullYear()); 
/* Verifico el número de días para el tipo de cálculo */
		trace("vencim " + vencim); 
	if (plazo > 0){
		if(vencim <= 30){  /* Enero/Marzo/Mayo/Julio/Agosto/Octubre/Diciembre*/
			do{ 
				vencimd = vencimd - 30;
				vencimm = vencimm + 1;
				if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
			}while(vencimd > 30);
		} else if (vencim = 31){ /* Abril/Julio/Septiembre/Noviembre */
			do{ 
				vencimd = vencimd - 31;
				vencimm = vencimm + 1;
				if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
			}while(vencimd > 31);
		}
	}else{ 
		fvencim = fechastr;
	}		
		fvencim = (String(vencimd) + "/" + String(vencimm) + "/" + String(vencima));
		trace("vencim " + vencimd + "/" + vencimm + "/" + vencima); 
		trace("vencim " + fvencim); 	
}
Al ejecutarlo con un plazo de 45 días y 0 días hace esto:

A 45 días...

Cita:
vencim 1
vencim 16/10/2011
vencim 16/10/2011
A 0 días...

Cita:
vencim 1
vencim 1/9/2011
vencim 1/9/2011
Lo cual es correcto, sin embargo se me ocurrió ponerle 1 día de crédito y paso lo siguiente:

Cita:
vencim 1
vencim -28/10/2011
vencim -28/10/2011
Opte por sustituir esta parte...


Código:
do{ 
	vencimd = vencimd - 30;
	vencimm = vencimm + 1;
	if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 30);
Por eso...

Código:
do{ 
	vencimd = vencimd - vencim;
	vencimm = vencimm + 1;
	if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 30);
y me arroja la siguiente información:

Cita:
vencim 1
vencim 30/25/2011
vencim 30/25/2011
A estas horas ya no pienso bien... alguien tiene alguna idea de donde estoy fallando?

Saludos!!