Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
¿Cómo puedo cambiar en el tiempo una serie de marcas de tiempo en javascript?

Tengo una serie de objetos de tiempo creados así:

 let event = new Date()

Estos eventos se crean horas extras, por ejemplo:

  • primer evento creado*
  • 2 segundos después se crea otro evento
  • 5 segundos después otro evento
  • 3 segundos después se crea otro, etc...

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

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

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 .

about 4 years ago · Juan Pablo Isaza Denunciar

0

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.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda