Cómo sumar y restar días a una fecha en Java Script.

Sumar y restar días a una fecha en Java Script

Java Script es uno de los lenguajes de programación más utilizado y con más crecimiento en la actualidad debido a su sencillez y rapidez. Es por ese motivo que cada vez son más los programadores que lo utilizan y se encuentran con diferentes problemas.
Hace ya un tiempo me preguntaban cómo sumar y restar días a una fecha en Java Script, en consecuencia decidí hacer este tutorial rápido y sencillo.

Navegando por la web encontré muchas soluciones que tal vez resolvían el problema pero utilizaban muchas lineas de código y eran muy difíciles de entender para programadores principiantes.

Función para sumar y restar días a una fecha en Java Script

La siguiente función permite sumar y restar fechas en muy pocas lineas de código:

	
/* Función que suma o resta días a una fecha, si el parámetro
   días es negativo restará los días*/
function sumarDias(fecha, dias){
  fecha.setDate(fecha.getDate() + dias);
  return fecha;
}

Para utilizar esta función restandole 5 días a la fecha actual podríamos hacer lo siguiente:

var d = new Date();
console.log(sumarDias(d, -5));

En esta función se puede ver lo fácil que es sumar y restar días a una fecha en Java Script, además de entender el código. Antes cualquier problema que tengan no duden en dejar un comentario.

AboutJosé Di Meglio

Apasionado de la tecnología y programación. Aportando información gratuita sobre el mundo de la informática.

14 comments

  1. Creo que es sencilla pero te falto dar mas detalles, como por ejemplo en que formato tiene que ir la fecha me refiero a yyyy-mm-dd o yyyy-mm-dd hh:mm:ss, o tal vez en dd-mm-yyyy

    1. Hola Max, gracias por comentar en el blog. La solución funciona con cualquier tipo de formato de fecha, siempre que sea un objeto Date como se muestra en el final del ejemplo. Cualquier otra duda avisame.

    1. Buenas, una posibilidad para cambiar el formato de las fechas es lo siguiente:

      var date = new Date('2010-10-11T00:00:00+05:30');
      alert(date.getDate() + '/' (date.getMonth() + 1) + '/' +  date.getFullYear());
      

      Cualquier duda avisame.

    1. Hola Angel, tené en cuenta que si sumas 4 días al 28 de febredo de 2018 te tiene que dar 4 y no 2 como decis, por otra parte acabo de realizar pruebas y me funciona correctamente, osea el resultado es 4 de marzo. En que navegador estás haciendo las pruebas?

  2. Que tal amigo, perdón fue un error mio al momento de redactar, si el inicio de este semana (lunes) es 26 de febrero y quiero agregarle 4 días más a esa fecha para que sea viernes y caiga el 2 de marzo, con el código me dice que es 30 de marzo.
    Estoy en Chrome.

    La suma lo solucione de la siguiente manera:

    let initialDate = new Date()
    let temp = new Date(initialDate)
    let ant= 5 * 86399.9 //dias en segundos
    let finalDate = new Date(temp.setSeconds(this.ant))
    

    Asi no le sumas los días, y sumas horas como días.

    1. Bien que pudiste encontrar una solución y gracias por aportarla en el blog. Por otra parte acabo de realizar la siguiente prueba y me funciona correctamente:

      function sumarDias(fecha, dias){
        fecha.setDate(fecha.getDate() + dias);
        return fecha;
      }
      
      var d = new Date('2018-02-26');
      alert(sumarDias(d, 4));
      
      1. Ya hice la prueba con tu código y me funciona correctamente, pero con lo que estoy haciendo me sigue dando 30 de marzo. Aun así, muchísimas gracias por tu aporte, me sirvió de orientación. Mi código es el siguiente:

        private initialDate =new Date();
        private finalDate=new Date();
        private days;
        private ant;
        
        constructor() {
          let x= this.initialDate.getUTCDay();
          if(x==0){
            this.days=(-6);        
          }else{
            this.days=(x-1)*(-1);        
          }
          
          this.initialDate.setDate(this.initialDate.getDate() + this.days);
          this.initialDate = new Date((this.initialDate.getMonth()+1)+"/"+this.initialDate.getDate()+"/"+this.initialDate.getFullYear());
          let temp = new Date(this.initialDate)
          this.ant= 5 * 86399.9
          this.finalDate = new Date(temp.setSeconds(this.ant))
        }
        

        Su función es obtener el primer día lunes de la semana actual y el ultimo día viernes de la semana actual.

        Saludos, muchas gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *