Saludos, he realizado las siguientes funciones en javascript. Validad que dadas unas fechas de inicio y de fin éstas estén comprendidas como mucho entre un año natural.
Por defecto he configurado que las dos fechas estén entre el 1 de noviembre de un año y el 31 de octubre del año siguiente. Agradezco opiniones y posibles mejoras para hacerla más general o añadirle funcionalidad.
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 dia = pFecha.getDate();
var mes = pFecha.getUTCMonth()+1;
var anio = pFecha.getUTCFullYear();
//fecha inicio periodo.
var fecPeriodo = new Date (anio, mesIniPeriodo, diaIniPeriodo);
var ejercicio;
if ( pFecha < fecPeriodo ){
ejercicio = anio -1;
}else{
ejercicio= anio;
}
return ejercicio;
}
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);
if (ejercicioFecIni == ejercicioFecFin){
return true;
}else{
return false
}
}
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 sí esta en el periodo
//var fecini = new Date(2010,10,1);
//var fecfin = new Date(2011,9,32);
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>