Foros del Web » Programando para Internet » Javascript »

Sumar Dias

Estas en el tema de Sumar Dias en el foro de Javascript en Foros del Web. Hola como hago para sumar dias a una fecha, por ejemplo: tengo 13/02/2002 sumarle 5 dias y deberia devolverme 18/02/2002. en el visual basic existe ...
  #1 (permalink)  
Antiguo 13/02/2002, 18:13
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Sumar Dias

Hola como hago para sumar dias a una fecha, por ejemplo:
tengo 13/02/2002 sumarle 5 dias y deberia devolverme 18/02/2002.
en el visual basic existe la funcion Dateadd, existe algo equivalente el JavaScript

Gracias.
Nilton
  #2 (permalink)  
Antiguo 15/02/2002, 09:03
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Sumar Dias

ninguna idea sobre la pregunta, es urgente.....

Nilton
  #3 (permalink)  
Antiguo 15/02/2002, 09:56
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: Sumar Dias

Hola niltonc.

Pregunta: ¿las fechas están en un string o en variables tipo Date()?

Te puedo hacer una función para cualquiera de las dos alternativas que me digas pero me vas a tener que esperar hasta mediodia ¿bien?

Suerte.
  #4 (permalink)  
Antiguo 15/02/2002, 13:18
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Sumar Dias

estan en string, ok, amigo, te lo agradecere.

Saludos.
Nilton
  #5 (permalink)  
Antiguo 15/02/2002, 13:50
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años
Puntos: 0
Re: Sumar Dias

Hola, para eso debes usar esta función. Te dejo la diocumentación completa:

Función DateAdd

Descripción
Devuelve una fecha a la que se agregó un intervalo de tiempo especificado.

Sintaxis
DateAdd(intervalo, número, fecha)

La sintaxis de la función DateAdd tiene las siguientes partes:

Parte Descripción
intervalo Requerido. Expresión de cadena que es el intervalo que desea agregar. Consulte la sección Valores para saber cuáles son los valores permitidos.
número Requerido. Expresión numérica que es el número de intervalo que desea agregar. La expresión numérica puede ser positiva, para fechas futuras, o negativas, para fechas pasadas.
fecha Requerido. Variant o literal que representa la fecha a la que se agrega intervalo.


Valores
El argumento intervalo puede tener los siguientes valores:
Valor Descripción
yyyy Año
q Trimestre
m Mes
y Día del año
d Día
w Día de la semana
ww Semana del año
h Hora
n Minuto
s Segundo


Comentarios
Puede usar la función DateAdd para sumar o restar un intervalo de tiempo especificado a una fecha. Por ejemplo, puede usar DateAdd para calcular una fecha 30 días a partir de hoy o una hora 45 minutos desde ahora. Para agregar días a fecha, puede usar Día del año ("y"), Día ("d") o Día de la semana ("w").
La función DateAdd no devolverá una fecha no válida. El siguiente ejemplo suma un mes al 31 de enero:

Nuevafecha = DateAdd("m", 1, "31-Ene-95")

En este caso, DateAdd devuelve 28-Feb-95, no 31-Feb-95. Si fecha es 31-Ene-96, devuelve 29-Feb-96 porque 1996 es un año bisiesto.
Si la fecha calculada es anterior al año 100, se produce un error.

Si el número no es un valor de tipo Long, se redondea al número entero más cercano antes de evaluarlo.

Saludos. ;)

<a href="http://www.laventanita.net/" target="_blank">
<img src="http://www.breogan.org/images/Aston.gif" border="0" alt="La Ventanita.net - Lo imprescindible en la red"></a>
  #6 (permalink)  
Antiguo 15/02/2002, 14:15
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Sumar Dias

gracias Aston, pero si se como se utiliza la funcion Dateadd, mi pregunta es si existe una equivalente en javascript o puedo utilizar esta misma funcion, ya que por mas que he estado buscando no lo he visto.

de todas maneras gracias
  #7 (permalink)  
Antiguo 15/02/2002, 15:40
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: Sumar Dias

Niltonc prueba esto:

&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;JavaScript&quot;&gt;

var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function finMes(nMes, nAno){
return aFinMes[nMes - 1] + ((nAno % 4) == 0? 1: 0);
}

function addToDate(sFec0, sInc){
var nDia = Number(sFec0.substr(0, 2));
var nMes = Number(sFec0.substr(3, 2));
var nAno = Number(sFec0.substr(6, 4));
nDia += Number(sInc);
while (nDia &gt; finMes(nMes, nAno)){
nDia -= finMes(nMes, nAno);
nMes += 1;
if (nMes == 13){
nMes = 1;
nAno += 1;
}
}
return String(nDia) + &quot;/&quot; + String(nMes) + &quot;/&quot; + String(nAno);
}

function recalcF1(){
with (document.formulario){
fecha1.value = addToDate(fecha0.value, increm.value);
}
}

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form name=&quot;formulario&quot;&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Coloque una fecha válida (dd/mm/aaaa):
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;fecha0&quot; size=&quot;10&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Incremento:
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;increm&quot; size=&quot;3&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Resultado (dd/mm/aaaa):
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;fecha1&quot; disabled size=&quot;10&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;
&lt;input type=&quot;button&quot; onclick=&quot;recalcF1()&quot; value=&quot;Calcular&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Suerte.
  #8 (permalink)  
Antiguo 15/02/2002, 16:05
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: Sumar Dias

Versión modificada para que el resultado quede en el formato dd/mm/aa:

&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;JavaScript&quot;&gt;

var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function finMes(nMes, nAno){
return aFinMes[nMes - 1] + ((nAno % 4) == 0? 1: 0);
}

function padNmb(nStr, nLen){
var sRes = String(nStr);
var sCeros = &quot;0000000000&quot;;
return sCeros.substr(0, nLen - sRes.length) + sRes;
}

function addToDate(sFec0, sInc){
var nDia = Number(sFec0.substr(0, 2));
var nMes = Number(sFec0.substr(3, 2));
var nAno = Number(sFec0.substr(6, 4));
nDia += Number(sInc);
while (nDia &gt; finMes(nMes, nAno)){
nDia -= finMes(nMes, nAno);
nMes += 1;
if (nMes == 13){
nMes = 1;
nAno += 1;
}
}
return padNmb(nDia, 2) + &quot;/&quot; + padNmb(nMes, 2) + &quot;/&quot; + padNmb(nAno, 4);
}

function recalcF1(){
with (document.formulario){
fecha1.value = addToDate(fecha0.value, increm.value);
}
}

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form name=&quot;formulario&quot;&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Coloque una fecha válida (dd/mm/aaaa):
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;fecha0&quot; size=&quot;10&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Incremento:
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;increm&quot; size=&quot;3&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot;&gt;
Resultado (dd/mm/aaaa):
&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;text&quot; name=&quot;fecha1&quot; disabled size=&quot;10&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;
&lt;input type=&quot;button&quot; onclick=&quot;recalcF1()&quot; value=&quot;Calcular&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Avísame si no te funciona.
  #9 (permalink)  
Antiguo 15/02/2002, 16:21
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Sumar Dias

ok, gracias, ahora lo pruebo.

Saludos.
Nilton.
  #10 (permalink)  
Antiguo 13/04/2004, 07:50
 
Fecha de Ingreso: abril-2004
Mensajes: 1
Antigüedad: 20 años
Puntos: 0
Una sola modificacion a la version de Kaopectate, pues cuando se suman dias a una fecha que pasa de un mes a otro hay problemas con el año biciesto... por lo que solo hay que modificar la funcion FinMes que quedaria de la siguiente manera.

function FinMes(nMes, nAno){
var nMesBis = 0;
if (nMes == 2 && (nAno % 4) == 0)
nMesBis = 1;
return eval(aFinMes[nMes - 1] + nMesBis);
}

El codigo esta extendido para hacerlo mas comprensible.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:59.