OK, intentaré explicarlo un poco mejor. En el supuesto formulario hay dos fechas: una de inicio y una de fin. Pueden escoger cualquier tipo de fecha pero se debe validar que esas dos fechas deben estar en el rango de un mismo ejercicio. Un ejercicio va desde el 1 de noviembre de un año hasta el 31 de octubre del año siguiente. La idea de dar tanto rodeo es hacer la función algo más útil dejando elegir la fecha interanual de inicio.
En el ejemplo que has puesto solo tienes en cuenta de que se trate de una fecha. Además no tienes en cuenta el año bisiesto.
Imaginemos el caso:
fecha de inicio: 1 de noviembre del 2011
fecha de fin: 31 de octubre del 2015
Si no tengo en cuenta el año me saldría que el rango de fechas están dentro del mismo del mismo ejercicio, cuando en realidad no es así.
Bueno, he reescrito el código un poco. A ver qué les parece
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script language="JavaScript" src ="idiomas.js"> </script>
<script type="text/javascript">
function obtenerEjercicio(pFecha, diaIniPeriodo, mesIniPeriodo){
var anio = pFecha.getUTCFullYear();
//fecha inicio periodo.
var fecPeriodo = new Date (anio, mesIniPeriodo, diaIniPeriodo);
return (pFecha < fecPeriodo) ? anio -1 : anio;
}
function estaDentroPeriodo( pFecIni, pFecFin, pDiaIniPeriodo, pMesIniPeriodo ){
//por defecto indicamos el 1 de noviembre (javascript empieza a contar los meses desde cero)
var diaIniPeriodo = pDiaIniPeriodo || 1;
var mesIniPeriodo = pMesIniPeriodo || 10;
var ejercicioFecIni = obtenerEjercicio(pFecIni, diaIniPeriodo,mesIniPeriodo);
var ejercicioFecFin = obtenerEjercicio(pFecFin, diaIniPeriodo,mesIniPeriodo);
return (ejercicioFecIni == ejercicioFecFin)
}
function miFuncion() {
//varias pruebas con fechas
//sí esta en el periodo
//var fecini = new Date(2010,10,1);
//var fecfin = new Date(2011,9,31);
//NO esta en el periodo
//var fecini = new Date(2010,9,1);
//var fecfin = new Date(2011,9,32);
//No esta en el periodo
var fecini = new Date(2010,10,1);
var fecfin = new Date(2015,9,31);
if ( ! estaDentroPeriodo(fecini, fecfin) ){
document.write('NO esta dentro del periodo');
}else{
document.write('Esta dentro del periodo');
}
}
</script>
</head>
<body onLoad="miFuncion()">
</body>
</html>