Ver Mensaje Individual
  #36 (permalink)  
Antiguo 04/12/2002, 10:33
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 24 años, 10 meses
Puntos: 38
36.- Sumar meses a una fecha

P: ¿Cómo puedo sumar (o restar) una cantidad de meses a una fecha válida?

R: [ver ejemplo]

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
   function 
cerosIzq(sVal, nPos){
    var 
sRes = sVal;
    for (var 
i = sVal.length; i < nPos; i++)
     
sRes = "0" + sRes;
    return 
sRes;
   }

   function 
armaFecha(nDia, nMes, nAno){
    var 
sRes = cerosIzq(String(nDia), 2);
    
sRes = sRes + "/" + cerosIzq(String(nMes), 2);
    
sRes = sRes + "/" + cerosIzq(String(nAno), 4);
    return 
sRes;
   }

   function 
sumaMes(nDia, nMes, nAno, nSum){
    if (
nSum >= 0){
     for (var 
i = 0; i < Math.abs(nSum); i++){
      if (
nMes == 12){
       
nMes = 1;
       
nAno += 1;
      } else 
nMes += 1;
     }
    } else {
     for (var 
i = 0; i < Math.abs(nSum); i++){
      if (
nMes == 1){
       
nMes = 12;
       
nAno -= 1;
      } else 
nMes -= 1;
     }
    }
    return 
armaFecha(nDia, nMes, nAno);
   }

   function 
calcula(){
    var 
sFc0 = document.frm.fecha0.value; // Se asume válida
    
var nSum = parseInt(document.frm.meses.value);
    var 
sFc1 = sFc0;
    if (!
isNaN(nSum)){
     var 
nDia = parseInt(sFc0.substr(0, 2));
     var 
nMes = parseInt(sFc0.substr(3, 2));
     var 
nAno = parseInt(sFc0.substr(6, 4));
     
sFc1 = sumaMes(nDia, nMes, nAno, nSum);
    }
    
document.frm.fecha1.value = sFc1;
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   <table border="0">
    <tr>
     <td>
      <table border="1">
       <tr>
        <td align="right">
         Fecha inicial (dd/mm/aaaa)
        </td>
        <td>
         <input type="text" name="fecha0" value="21/03/2002">
        </td>
       </tr>
       <tr>
        <td align="right">
         Meses
        </td>
        <td>
         <input type="text" name="meses" value="0">
        </td>
       </tr>
       <tr>
        <td align="right">
         Fecha final (dd/mm/aaaa)
        </td>
        <td>
         <input type="text" name="fecha1" readonly>
        </td>
       </tr>
      </table>
     </td>
    </tr>
    <tr>
     <td align="center">
      <input type="button" value="Calcular" onclick="calcula()">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html> 

Última edición por Kaopectate; 23/12/2002 a las 23:56