Cambiar la hora en Javascript

El objeto Date no solo proporciona manejo para objetos con la fecha del día sino también con la hora del momento. Mas que fecha son objetos tipo instante.

La hora, además de consultarse, puede cambiarse. Para eso disponemos de métodos para poner la hora, minutos, segundos e incluso milisegunddos, y sus correspondientes versiones UTC. Un cambio de horas puede implicar también un cambio en la fecha del día.

  • setTime()
  • setHours() / setUTCHours()
  • setMinutes() / setUTCMinutes()
  • setSeconds() / setUTCSeconds()
  • setMilliseconds() / setUTCMilliseconds()

El primer método, setTime(valor) que no necesita versión UTC, cambia la fecha al número de milisegundos desde la fecha origen (1/1/1970 00:00) que se le indique en el argumento. Es un cambio total de la hora, válido por ejemplo para asignar una hora a otro objeto tipo Date.

Los restantes métodos cambian la hora por partes: horas, minutos segundos o milésimas de segundo. Los valores deben estar en sus respectivos rangos: 0-24 para horas, 0-60 para minutos y segundos y 0-999 para milisegundos.

Si los números no entran en sus rangos Javascript los ajusta haciendo los cambios de unidades necesarios. Así si se quieren poner los minutos en 90, Javascript sube las horas en 1 (60 minutos) y deja los minutos en 30. Igual pasa con las horas, más de 24 horas implica un incremento en el día del mes.

var fecha = new Date("2, 18, 2021 01:20:00");

var copia = new Date();

copia.setTime(fecha.getTime() );

console.log(fecha);

console.log(copia) ;

Mediante el número de milisegundos hemos copiado la primera fecha a la segunda.

Recuerda que las fechas son objetos y sus valores realmente son referencias a posiciones de memoria. Por lo que copiar una fecha sobre otra implica hacer que ambas variables sean la misma, no copias.