Introducción

En nuestra vida como programadores hay cosas fáciles y difíciles. Personalmente, el trabajo con fechas se me hacía complicado al inicio.

Hoy veremos cómo sumar y restar fechas en Javascript para poder calcular rangos, estimar qué fecha fue hace una semana, etcétera.

Será muy fácil y nos ayudará a entender las cosas.

Nota: ¿Quieres operar fechas pero usando Java? si es así, visita: sumar y restar fechas con Java.

Explicación

Para sumar y restar fechas el algoritmo es muy, muy sencillo. No vamos a parsear cadenas ni cosas de esas que dan miedo; nada de eso. Lo único que haremos será convertir las fechas a un objeto de tipo Date.

Después, con Date obtendremos el tiempo unix con .getTime() que nos dará un entero muy grande. A ese entero lo podemos dividir para sacar segundos (dividir entre 1000), o para minutos (dividir entre 1000/60), etcétera.

Finalmente, estos milisegundos los convertimos de nuevo a una fecha legible y todo listo 😉

Sumar fechas con Javascript

Calcular tiempo a futuro

Comencemos viendo cómo podemos saber qué fecha será dentro de una semana a partir de hoy. Al momento de escribirlo, es 14 de mayo. Fácilmente podríamos sacar el 14 de la fecha, sumarle 7 y decir que es 21.

Gran error, ya que funciona para este momento, pero no funcionaría si hoy fuera 31 de mayo, pues daría un resultado de 38.

Mejor instanciamos una fecha:

Calculamos cuántos milisegundos tiene una semana:

Como se puede ver, multiplicamos 1000 milisegundos por sesenta segundos, por sesenta minutos, por 24 horas y finalmente por 7 días.

Luego hacemos la suma:

Y para terminar instanciamos, de nuevo, un objeto de tipo Date pero le pasamos un argumento: la suma de milisegundos:

El código completo se ve así:

Al ejecutarlo, podemos ver que efectivamente ha sumado las fechas con una exactitud de milisegundos…

Restar fechas con Javascript

Calcular tiempo de hace algunos días

Hagamos lo contrario. Veamos cuál es la fecha de hace 16 días, esto lo hago para ejemplificar que podemos sumar y restar todo tipo de medida de tiempo.

Obtenemos la fecha de hoy:

Hacemos la operación para saber cuánto es, en milisegundos, 16 días:

Calculamos la resta e instanciamos la fecha de hace 16 días:

Con estos resultados:

Calcular tiempo transcurrido entre 2 fechas

Al restar fechas también podemos saber la cantidad de tiempo transcurrido entre 2 de ellas. Tenemos que obtener el tiempo de cada una de ellas, restarlo para obtener los milisegundos y luego convertirlos a días, semanas, meses o lo que sea.

Primero necesitamos nuestras dos fechas:

En este caso será la fecha de mañana, aunque dicha fecha puede venir de cualquier lado. Recuerda que si la fecha es una cadena debes ajustar su tiempo.

Luego sacamos la diferencia:

Recordemos que el resultado está en milisegundos, y en este caso lo convertiré a horas:

Por lo que, al ejecutarlo, estos son los resultados:

Notar por favor que la variable mañana la declaré yo, pero bien podría venir de cualquier lado como una cadena o un input de tipo fecha.

Conclusión

Si utilizas AngularJS te invito a leer cómo formatear una fecha y ponerla en un filtro para que sea legible para el usuario.

También es importante que sepas cómo ajustar las fechas si las instancias desde una cadena.

Finalmente, he aquí la documentación oficial de Date.

No te vayas sin seguirme en Twitter, Facebook y GitHub, así me motivas a escribir más posts.
Igualmente te invito a suscribirte en la parte superior derecha escribiendo tu correo en el formulario.
Si tienes dudas déjalas en un comentario


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

2 Comments

Sumar y restar fechas en Java - Parzibyte's blog · octubre 16, 2018 a las 9:48 pm

[…] vimos cómo sumar y restar fechas con JavaScript sin importar si eran años, meses o días, pues convertíamos todo a milisegundos. Hoy toca el […]

Luchando contra el caché de los navegadores - Parzibyte's blog · noviembre 15, 2018 a las 8:00 pm

[…] Recomendado: operar fechas con JavaScript. […]

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: