Tengo una serie de objetos de tiempo creados así:
let event = new Date()Estos eventos se crean horas extras, por ejemplo:
Entonces, cada objeto de tiempo tiene el tiempo correspondiente en el que se creó.
Los eventos donde obviamente se crearon en el pasado, y hay un primer evento.
y todos se almacenan en una matriz como: [evento1, evento2, evento3...] Los eventos son el objeto que devuelve la función new Date() .
¿Cómo puedo cambiar todos estos eventos para que comiencen en el futuro?
Por el futuro me refiero, por ejemplo, cada vez que se ejecuta un evento, un clic, etc...
¿Cómo puedo cambiar su tiempo por igual para que todos los eventos vayan en el mismo orden, pero comiencen en el futuro?
Es como una grabación, siendo reproducida.
Gracias
Si bien el manejo de la fecha es una de las partes bastante malas de JS 1 , este cambio breve es relativamente simple. Simplemente calculamos nuevas marcas de tiempo en función de la diferencia entre la primera fecha de la lista y la actual, y agregamos esa diferencia a nuestra nueva hora de inicio, luego creamos una Fecha a partir de esa marca de tiempo:
const shiftEvents = (start, events) => events .map (e => new Date (e - events[0] + start .getTime ())) const events = [new Date ('2022-03-09T22:51:03.507'), new Date ('2022-03-09T22:51:05.492'), new Date ('2022-03-09T22:51:10.604'), new Date ('2022-03-09T22:51:13.551')] console .log (shiftEvents (new Date ('2022-03-16T22:59:18.219'), events))1 Hay algo mejor en el horizonte en la propuesta de Temporal .
var events = [...]; var firstEvent = events[0]; var now = new Date(); var oldestEventAge = now.getTime() - firstEvent.getTime(); var hour = 1000 * 60 * 60; for (let e of events) { e.setTime(e.getTime() + oldestEventAge + hour); }Aquí obtenemos el primer evento y calculamos cuántos milisegundos han ocurrido desde ahora hasta ese momento. es decir, cuántos años tiene.
Entonces definimos 1 hora en milisegundos. Así de lejos estamos empujando el primer evento hacia el futuro.
Luego, para cada evento, sumamos a su tiempo actual en milisegundos la antigüedad del evento más antiguo más una hora.
Esto dará como resultado que el evento más antiguo esté 1 hora en el futuro y que todos los eventos posteriores estén a la misma distancia del evento más antiguo y también en el futuro.
Obviamente, cambie el valor de la hour para que sea lo lejos que desee que esté el primer evento en el futuro.