Sumar n días a Fecha

¿Tengo en un archivo de texto que dígito la fecha en formato mm/dd/yyyy, como hago para restar o sumar n días a esa fecha?

1 respuesta

Respuesta
1
Yo tuve un problema así. Dada una fecha tenía que calcular otra. He encontrado el código fuente que utilicé (javascript). Es un poco lioso, pero echaléun vistazo.
De todas formas si no te aclaras existe un truco que es poner la fecha en formato americano (aaaammdd) y sumar los días, teniendo en cuenta que solo pueden llegar a 28, 30 0 31 y los meses a 12.
var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function finMes(nMes, nAno){
return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}
function padNmb(nStr, nLen, sChr){
var sRes = String(nStr);
for (var i = 0; i < nLen - String(nStr).length; i++)
sRes = sChr + sRes;
return sRes;
}
function makeDateFormat(nDay, nMonth, nYear){
var sRes;
sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
return sRes;
}
function incDate(sFec0){
var nDia = parseInt(sFec0.substr(0, 2), 10);
var nMes = parseInt(sFec0.substr(3, 2), 10);
var nAno = parseInt(sFec0.substr(6, 4), 10);
nDia += 1;
if (nDia > finMes(nMes, nAno)){
nDia = 1;
nMes += 1;
if (nMes == 13){
nMes = 1;
nAno += 1;
}
}
return makeDateFormat(nDia, nMes, nAno);
}
function decDate(sFec0){
var nDia = Number(sFec0.substr(0, 2));
var nMes = Number(sFec0.substr(3, 2));
var nAno = Number(sFec0.substr(6, 4));
nDia -= 1;
if (nDia == 0){
nMes -= 1;
if (nMes == 0){
nMes = 12;
nAno -= 1;
}
nDia = finMes(nMes, nAno);
}
return makeDateFormat(nDia, nMes, nAno);
}
function addToDate(sFec0, sInc){
var nInc = Math.abs(parseInt(sInc));
var sRes = sFec0;
if (parseInt(sInc) >= 0)
for (var i = 0; i < nInc; i++) sRes = incDate(sRes);
else
for (var i = 0; i < nInc; i++) sRes = decDate(sRes);
return sRes;
}
function recalcF1(){
with (document.frm){
txtFechaDesde.value = addToDate(txtFechaHasta.value, -30);
}
}
var fecha;
function cargafechas(){
//Para lafecha actual
var mydate=new Date();
var year=mydate.getYear();
if (year < 1000)
year+=1900;
var day=mydate.getDay();
var month=mydate.getMonth()+1;
if (month<10)
month="0"+month;
var daym=mydate.getDate();
if (daym<10)
daym="0"+daym;
fecha=daym+"/"+month+"/"+year;
document.frm.txtFechaHasta.value=fecha;
recalcF1();
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas