Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2011, 16:42
occiso
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 20 años, 1 mes
Puntos: 5
Validad que dos fechas pertenecen a un período

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>