3.10.06

Funciones para manipular fechas

Diseñando páginas web, muchas veces tenemos que manipular fechas, realizar cálculos, etc. He aquí unas funciones que serán de gran ayuda.


Suma o resta de una fecha
function dateAdd(per,n,d) {
   switch(per) {
      case "y": d.setYear(d.getFullYear()+n); break;
      case "m": d.setMonth(d.getMonth()+n); break;
      case "w": n*=7;
      case "d": d.setDate(d.getDate()+n); break;
      case "h": d.setHours(d.getHours()+n); break;
      case "n": d.setMinutes(d.getMinutes()+n); break;
      case "s": d.setSeconds(d.getSeconds()+n);
   }
   return d;
}

Parámetros:

  • per: (String de 1 posición) es el período deseado. Los valores aceptados son y, año; m, mes; w, semana; d, día; h, hora; n, minutos; y s, segundos.
  • n: (Número) valor a incrementar o restar.
  • d: (Objeto) Objeto de tipo date, conteniendo la fecha que se quiere modificar.

Retorna un objeto de tipo date con la fecha modificada según lo solicitado.


Sumar meses a una fecha
function SumarMeses(aFec, cant)
{
   var d = Number(aFec[0]);
   var m = Number(aFec[1]) + Number(cant);
   var a = Number(aFec[2]);
   var lBisi = false;
   if(m > 13)
   {
      a++;
      m -= 12;
   }
   if (a % 4 == 0)
   {
      if (a % 100 != 0  a % 400 == 0) lBisi = true;
   }
   if (m == 2)
   {
      if(d > 28)
      {
        if(lBisi) d=29;
         if(!lBisi) d=28;
      }
   }
   if ((m == 4  m == 6  m == 9  m == 11) && d > 30) d = 30;
   return new Array(d,m,a);
}

Parámetros:

  • aFec: Objeto de tipo Array de 3 elementos.
    • Elemento 0: el día
    • Elemento 1: el mes
    • Elemento 2: el año, de 4 dígitos.
  • cant: número de meses a incrementar o restar

Retorna un objeto del tipo Array conteniendo los mismos elementos que el parámetro aFec, con la fecha modificada.


Diferencia entre dos fechas
function dateDiff(per,d1,d2) {
   var d = (d2.getTime()-d1.getTime())/1000
   switch(per) {
      case "y": d/=12
      case "m": d*=12*7/365.25
      case "w": d/=7
      case "d": d/=24
      case "h": d/=60
      case "n": d/=60
   }
   return Math.floor(d);
}

Parámetros:

  • per: String de una posición que indica el período a calcular: y, años; m, meses; w, semanas; d, días; h, horas; y n, minutos.
  • d1: Objeto de tipo Date, con la fecha menor.
  • d2: Objeto de tipo Date, con la fecha mayor.

Retorna un número.

0 Comentarios: