Ver Mensaje Individual
  #109 (permalink)  
Antiguo 19/02/2003, 11:27
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 3 meses
Puntos: 38
109.- Valores iniciales de un rango de fechas

P: ¿Como puedo asignar los valores iniciales a un rango de fechas?

R: [ver ejemplo]

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
  
   
// Funciones comunes a todos los métodos de selección

   
function padNmb(nStrnLensChr){
    var 
sRes String(nStr);
    for (var 
0nLen String(nStr).lengthi++)
     
sRes sChr sRes;
    return 
sRes;
   }

   function 
makeDateFormat(nDaynMonthnYear){
    var 
sRes;
    
sRes padNmb(nDay2"0") + "/" padNmb(nMonth2"0") + "/" padNmb(nYear4"0");
    return 
sRes;
   }
   
   function 
prevMonth(nMonth){
    return ((
nMonth 10) % 12) + 1;
   }

   function 
prevMonth_Year(nMonthnYear){
    return 
nYear - (((nMonth 10) % 12) + == 1210);
   }

   function 
lastDayOfMonth(nMonthnYear){
    var 
aMonth = new Array(312831303130313130313031);
    if ((
nMonth == 2) && (nYear == 0))
     return 
29;
    else
     return 
aMonth[nMonth 1];
   }

   function 
incDate(sFec0){
    var 
nDia parseInt(sFec0.substr(02), 10);
    var 
nMes parseInt(sFec0.substr(32), 10);
    var 
nAno parseInt(sFec0.substr(64), 10);
    
nDia += 1;
    if (
nDia lastDayOfMonth(nMesnAno)){
     
nDia 1;
     
nMes += 1;
     if (
nMes == 13){
      
nMes 1;
      
nAno += 1;
     }
    }
    return 
makeDateFormat(nDianMesnAno);
   }

   function 
decDate(sFec0){
    var 
nDia parseInt(sFec0.substr(02), 10);
    var 
nMes parseInt(sFec0.substr(32), 10);
    var 
nAno parseInt(sFec0.substr(64), 10);
    
nDia -= 1;
    if (
nDia == 0){
     
nMes -= 1;
     if (
nMes == 0){
      
nMes 12;
      
nAno -= 1;
     }
     
nDia lastDayOfMonth(nMesnAno);
    }
    return 
makeDateFormat(nDianMesnAno);
   }

   function 
addToDate(sFec0nInc){
    var 
nIncAbs Math.abs(nInc);
    var 
sRes sFec0;
    if (
nInc >= 0)
     for (var 
0nIncAbsi++) sRes incDate(sRes);
    else
     for (var 
0nIncAbsi++) sRes decDate(sRes);
    return 
sRes;
   }

   
// Funciones individuales de cada método de selección

   // Esta semana completa (Lun -> Dom)
   
function setDefaults1(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
nDOW dToday.getDay();
    var 
sFirstDatesLastDate;

    if (
nDOW == 0nDOW 7;
    
sFirstDate addToDate(makeDateFormat(nDaynMonthnYear), -* (nDOW 1));
    
sLastDate addToDate(sFirstDate6);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Lo que va de esta semana (Lun -> Hoy)
   
function setDefaults2(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
nDOW dToday.getDay();
    var 
sFirstDatesLastDate;

    if (
nDOW == 0nDOW 7;
    
sLastDate makeDateFormat(nDaynMonthnYear);
    
sFirstDate addToDate(sLastDate, -* (nDOW 1));
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// La semana pasada (Lun -> Dom)
   
function setDefaults3(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
nDOW dToday.getDay();
    var 
sFirstDatesLastDate;

    if (
nDOW == 0nDOW 7;
    
sLastDate addToDate(makeDateFormat(nDaynMonthnYear), -nDOW);
    
sFirstDate addToDate(sLastDate, -6);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Los últimos siete días
   
function setDefaults4(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sLastDate makeDateFormat(nDaynMonthnYear);
    
sFirstDate addToDate(sLastDate, -6);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Este mes completo
   
function setDefaults5(oFromoTo){
    var 
dToday = new Date();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sFirstDate makeDateFormat(1nMonthnYear);
    
sLastDate makeDateFormat(lastDayOfMonth(nMonthnYear), nMonthnYear);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Lo que va de este mes
   
function setDefaults6(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sFirstDate makeDateFormat(1nMonthnYear);
    
sLastDate makeDateFormat(nDaynMonthnYear);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// El mes pasado
   
function setDefaults7(oFromoTo){
    var 
dToday = new Date();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
nYear prevMonth_Year(nMonthnYear);
    
nMonth prevMonth(nMonth);
    
sFirstDate makeDateFormat(1nMonthnYear);
    
sLastDate makeDateFormat(lastDayOfMonth(nMonthnYear), nMonthnYear);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Los últimos treinta días
   
function setDefaults8(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sLastDate makeDateFormat(nDaynMonthnYear);
    
sFirstDate addToDate(sLastDate, -29);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Este año completo
   
function setDefaults9(oFromoTo){
    var 
dToday = new Date();
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sFirstDate makeDateFormat(11nYear);
    
sLastDate makeDateFormat(3112nYear);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Lo que va de este año
   
function setDefaults10(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sFirstDate makeDateFormat(11nYear);
    
sLastDate makeDateFormat(nDaynMonthnYear);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// El año pasado
   
function setDefaults11(oFromoTo){
    var 
dToday = new Date();
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sFirstDate makeDateFormat(11nYear 1);
    
sLastDate makeDateFormat(3112nYear 1);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   
// Los últimos 365 días
   
function setDefaults12(oFromoTo){
    var 
dToday = new Date();
    var 
nDay dToday.getDate();
    var 
nMonth dToday.getMonth() + 1;
    var 
nYear dToday.getYear();
    var 
sFirstDatesLastDate;

    
sLastDate makeDateFormat(nDaynMonthnYear);
    
sFirstDate addToDate(sLastDate, -364);
    
oFrom.value sFirstDate;
    
oTo.value sLastDate;
   }

   function 
setDefaults(oFromoTonMeth){
    switch (
nMeth){
     case 
0
      
alert("");
      break;
     case 
1:
      
setDefaults1(oFromoTo);
      break;
     case 
2:
      
setDefaults2(oFromoTo);
      break;
     case 
3:
      
setDefaults3(oFromoTo);
      break;
     case 
4:
      
setDefaults4(oFromoTo);
      break;
     case 
5:
      
setDefaults5(oFromoTo)
      break;
     case 
6:
      
setDefaults6(oFromoTo)
      break;
     case 
7:
      
setDefaults7(oFromoTo)
      break;
     case 
8:
      
setDefaults8(oFromoTo)
      break;
     case 
9:
      
setDefaults9(oFromoTo)
      break;
     case 
10:
      
setDefaults10(oFromoTo)
      break;
     case 
11:
      
setDefaults11(oFromoTo)
      break;
     case 
12
      
setDefaults12(oFromoTo)
      break;
    }
   }

  
</script>
 </head>
 <body>
  <form name="formulario">
   <table border="0">
    <tr>
     <td colspan="2" style="font-family: helvetica; text-align: center; font-size: 12; font-weight: bold">
      VALORES DE INICIO DE UN RANGO DE FECHAS
     </td>
    </tr>
    <tr height="50">
     <td align="right">
      Tipo de rango:
     </td>
     <td>
      <select name="sel" onchange="setDefaults(document.formulario.fecha_desde, document.formulario.fecha_hasta, this.selectedIndex)">
       <option>...seleccione</option>
       <option>Esta semana completa</option>
       <option>Lo que va de esta semana</option>
       <option>La semana pasada</option>
       <option>Los últimos siete días</option>
       <option>Este mes completo</option>
       <option>Lo que va de este mes</option>
       <option>El mes pasado</option>
       <option>Los últimos treinta días</option>
       <option>Este año completo</option>
       <option>Lo que va de este año</option>
       <option>El año pasado</option>
       <option>Los últimos 365 días</option>
      </select>
     </td>
    </tr>
    <tr>
     <td align="right">
      Desde (dd/mm/yyyy):
     </td>
     <td>
      <input type="text" name="fecha_desde">
     </td>
    </tr>
    <tr>
     <td>
      Hasta (dd/mm/yyyy):
     </td>
     <td>
      <input type="text" name="fecha_hasta">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html> 

Última edición por Kaopectate; 19/02/2003 a las 11:29