viernes, 9 de diciembre de 2016

Calcular la próxima fecha dado una cantidad de días con Java Script

 

javascript_logo

Si deseas sumarle o restarle días a una fecha cualquiera puedes usar la siguiente función que pongo a continuación; la cual espera como entrada una fecha y un número de días. Si Deseas sumar días, solo pasa el número sin signo. Si deseas restar días pásale un número negativo.

Te comento, todo depende del objeto DATE, que tiene un método para obtener los milisegundos de una fecha: setTime() y getTime para asignar, solo tienes que convertir los días a milisegundos y ya está, te paso un ejemplo.

Para convertir los días milisegundos solo tienes que aplicar la siguiente fórmula:

milisegundos=parseInt(cantidad_de_dias*24*60*60*1000);

a la función solo tenemos que pasarle la fecha a la que deseamos sumarle los días y la cantidad de días que queremos adicionarle.

El formato de la fecha debe ser similar a la que muestro a continuación:

var fecha = 01/01/1900;

Y luego de la fecha anterior es necesario separar los el día, el mes y el año para poder crear el objeto Date con la fecha de deseamos.

fecha = fecha.split(‘/’);

var day = fecha[0];

var month fecha[1];

var year = fecha[2];

var miFecha = new Date(year, month-1, day);

Como se muestra, al objeto Date se le pasa el mes restándole una unidad y es debido a que la información de los meses este objeto la almacena en un arreglo de 12 posiciones comenzando por el 0 y a la hora de crearlo se le pasa la posición en que se encuentra el mes y no el número del mes en cuestión.

Ya lo que resta es sumarle la cantidad de días en milisegundos a la fecha

miFecha.setTime(miFecha.getTime()+miliseconds);

A continuación les dejo la función completa:

function sumarDias(fecha, days){

fecha = fecha.split(‘/’);

var day = fecha[0];

var month fecha[1];

var year = fecha[2];

var miliseconds = parseInt(days*24*60*60*1000);

var miFecha = new Date(year, month-1, day);

miFecha.setTime(miFecha.getTime()+miliseconds);

day = miFecha.getDate();

month = miFecha.getMonth()+1;

year = miFecha.getFullYear();

if(day < 10)

day = '0'+day;

if(month < 10)

month = '0'+month;

if(month == '00')

month = 12;

return day+'/'+month+'/'+year;

}

Espero que les sea de ayuda.


¿Te ha gustado este Post? Compártelo con tus amigos.

No hay comentarios:

Publicar un comentario

IconIconIcon