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.