¿Cómo manipular fechas en Javascript?

Developer tools

Las fechas e javascript pueden ser un poco complicadas cuando queremos hacer calculos entre datos, contadores entre muchos otros casos.

Por eso vamos a aprender alternativas para manipular fechas y aprender más sobre javascript.

Primero que nada, para comenzar a utilizar una fecha, debemos hacer una instancia de la clase Date que retorna la fecha actual de tu ordenador. Ejemplo:

var date = new Date() // salida: Sat May 30 2020 11:32:10 GMT-0400 (hora de Venezuela)

Esta clase también tiene unos constructores para manipular la fecha inicial. Puedes ver mas información aquí.

¿Cómo calcular tiempo entre 2 fechas en javascript?

Obteniendo el timestamps de ambas fechas y la restamos, nos dará como resultado el tiempo en milisegundos, y a ese tiempo le podemos sacar los días las fechas y las horas.

Hagamos un ejercicio práctico, y vamos a calcular cuanto tiempo falta para el año nuevo.

var today = new Date() // retorna tu fecha actual
var newYear = new Date(2021, 0, 1) // definimos una fecha objetivo

var time = newYear - today

Con esto ya tenemos el tiempo de diferencia.

Antes de calcular el siguiente paso, vamos a establecer unas reglas. Si queremos saber cuantos días hay en una fecha, necesitamos saber cuantos milisegundos equivale a 1 día, igual con los minutos, los años, los meses, etc.

var seg = 1000 // 1 segundo son 1000 milisegundos
var min = seg * 60 // 60000 milisegundos
var hour = min * 60 // 3600000 milisegundos
var day = hour * 24 // 86400000 milisegundos
var month = day * 30 // 2592000000 milisegundos
var years = month * 12 // 31104000000 milisegundos

Aunq algunos meses no tienen solo 30 días, 30 es el promedio de días en los meses.

ahora, si queremos saber cuantos días falta para finalizar el año, solo dividimos con nuestra variable day

var totalDays = time / day

Otros ejemplos claros

var totalSeconds = time / seg
var totalMonth= time / month

¿Cómo saber si una fecha pasó?

Obtetiendo la fecha actual menos la fecha objetivo, nos da la diferencia. si es mayor a 0, la fecha ya pasó

var today = new Date()
var date = new Date(2019, 0, 1)

var time = today - date

if( time > 0 ){
	// ya pasó la fecha
}

¿Por qué da positivo?

Porque es el tiempo que fata desde esa fecha hasta hoy, y si da negativo es porque está sobrando tiempo.

¿Cómo obtener el mes de una fecha en Javascript?

Para obtener el mes hay que usar el método getMonth.

Como dato curioso, este método retorna un 0 para Enero y 11 para Diciembre.

Entonces si queremos tener el texto del mes hay que hacer lo siguiente:

var meses = ['Enero', 'Febrero', ..., ..., 'Noviembre', 'Diciembre']
var fecha = new Date()

console.log( meses[fecha.getMonth()] )

¿Cómo obtener el día de una semana de una fecha?

El proceso es similar al paso anterior, pero con el método getDay(), siendo 0 Domingo y 6 Sábado

var dias = ['Domingo', 'Lunes', ..., ..., 'Viernes', 'Sábado']
var fecha = new Date()

console.log( dias[fecha.getDay()] )

¿Cómo súmar tiempo a las fechas?

Para sumar tiempo solo tenemos que tener en cuenta cuanto tiempo en milisegundos vamos a sumar. Podemos utilizar las reglas que establecimos previamente.

var fecha = new Date()
fecha.setTime( fecha.getTime() + years ) // sumar 1 año
fecha.setTime( fecha.getTime() + day) // sumar 1 día

¿Cómo hacer un reloj digital?

Para este ejemplo necesitamos ejecutar un código cada segundo o 1000 milisegundos. Y esta es una característica que la función setInterval nos permite realizar.

Y seria de la siguiente forma:

let date = new Date()
setInterval( () => {
  var hora = date.getHours()
  var min = date.getMinutes()
  var seg = date.getSeconds()

  console.log(`${hora}:${min}:${seg}`)
  
  date.setTime(date.getTime() + 1000) // añadimos 1 segundo en cada interación
}, 1000)

Puedes ver este ejemplo funcionando aquí

Artículos que podrían gustarte