Cálculo días

Hola,
¿Cómo se podría calcular en javascript los días que hace de una fecha (siempre sería la misma)? No hace falta sepáralo en años, meses, ... Slds!

1 respuesta

Respuesta
1
Esto se podría hacer solo restando los años, los meses y los días que faltan, pero no tendríamos en cuenta los años bisiestos, o el numero exacto de días de cada mes, en cada año.
Entonces hagamos un script más completo:
<html><head></head>
<body>
<script>
function leapYear(year) {
if (year % 4 == 0)
return true
/* else */
return false
}
function getDays(month, year) {
var ar = new Array(12)
ar[0] = 31 // Enero
ar[1] = (leapYear(year)) ? 29 : 28 // Febrero
ar[2] = 31 // Marzo
ar[3] = 30 // Abril
ar[4] = 31 // Mayo
ar[5] = 30 // Junio
ar[6] = 31 // Julio
ar[7] = 31 // Agosto
ar[8] = 30 // Septiembre
ar[9] = 31 // Octubre
ar[10] = 30 // Noviembre
ar[11] = 31 // Diciembre
return ar[month]
}
var e_dias=0;
function diasFaltan(e_dia,e_mes,e_anio){
e_mes--;
var hoy = new Date();
var fechaX= new Date(e_anio,e_mes,e_dia);
e_dias=0;
if(fechaX>hoy){
while(fechaX.getYear()>hoy.getYear()){
dias_e_anio = (leapYear(e_anio)) ? 365 : 366;
e_dias = e_dias + dias_e_anio;
e_anio--;
fechaX= new Date(e_anio,e_mes,e_dia);
}
while(fechaX.getMonth()>hoy.getMonth()){
dias_e_mes = getDays(e_mes,e_anio);
e_dias= e_dias+ dias_e_mes;
e_mes--;
fechaX= new Date(e_anio,e_mes,e_dia);
}
if(fechaX.getDate()>hoy.getDate()){
e_dias= e_dias+ (fechaX.getDate()-hoy.getDate());
}
// IMPRIMIMOS algo
document.write("<p>Faltan "+e_dias+ " para navidad del 2003");
}
else{
//si ya paso la fecha...
document.write("Ya paso la fecha");
}
}
</script>
La pagina..<p>bla bla bla bla...<p>
<script> //aca ponemos la funcion
diasFaltan(25,12,2003);
</script>
<p>el resto de la pagina...<p>blablabla
</body>
</HTML>
creo que esta todo muy explicito:
lo usas con diasFaltan(25,12,2003);
(dia,mes,año)
en este caso imprimira el texto:
"<p>Faltan "+e_dias+ " para navidad del 2003"
Pero lo puedes cambiar por lo que quieras. "e_dias" es la variable que guarda los días que faltan para la fecha proporcionada.
Saludos,
scriptman.
Pues solo invertimos la idea; cambiemos algunos signos y nos queda así:
<html><head>
</head>
<body>
<script>
function leapYear(year) {
if (year % 4 == 0)
return true
/* else */
return false
}
function getDays(month, year) {
var ar = new Array(12)
ar[0] = 31 // Enero
ar[1] = (leapYear(year)) ? 29 : 28 // Febrero
ar[2] = 31 // Marzo
ar[3] = 30 // Abril
ar[4] = 31 // Mayo
ar[5] = 30 // Junio
ar[6] = 31 // Julio
ar[7] = 31 // Agosto
ar[8] = 30 // Septiembre
ar[9] = 31 // Octubre
ar[10] = 30 // Noviembre
ar[11] = 31 // Diciembre
return ar[month]
}
var e_dias=0;
function diasPasaron(e_dia,e_mes,e_anio){
e_mes--;
var hoy = new Date();
var fechaX= new Date(e_anio,e_mes,e_dia);
e_dias=0;
if(fechaX<hoy){
while(fechaX.getYear()<hoy.getYear()){
dias_e_anio = (leapYear(e_anio)) ? 365 : 366;
e_dias = e_dias - dias_e_anio;
e_anio++;
fechaX= new Date(e_anio,e_mes,e_dia);
}
while(fechaX.getMonth()<hoy.getMonth()){
dias_e_mes = getDays(e_mes,e_anio);
e_dias= e_dias - dias_e_mes;
e_mes++;
fechaX= new Date(e_anio,e_mes,e_dia);
}
if(fechaX.getDate()<hoy.getDate()){
e_dias= e_dias+ parseInt(fechaX.getDate()-hoy.getDate());
}
e_dias = e_dias *-1;
// IMPRIMIMOS algo
document.write("<p>Han pasado "+e_dias+ " dias desde el 20/4/2003");
}
else{
//si no ha pasado la fecha...
document.write("No ha pasado la fecha");
}
}
</script>
La pagina..<p>bla bla bla bla...<p>
<script> //aca ponemos la funcion
diasPasaron(20,4,2003)
</script>
<p>el resto de la pagina...<p>blablabla
</body>
</HTML>
Saludos,
scriptman.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas