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

121
Vistas
Cómo obtener tiempos de varias máquinas tragamonedas

Estoy tratando de obtener tiempos de ranuras disponibles. Tengo startDateTime , endDateTime , duration y bufferBetweenSlots en mi base de datos. con algunos cálculos he averiguado el número de espacios disponibles.

el valor de los campos son:

 startDateTime: 8/20/2021 11:30 AM endDateTime: 8/20/2021 9:30 PM duration: 60 bufferBetweenSlots: 30

pero no estoy seguro de cómo obtener la hora de inicio y finalización de los espacios disponibles. por ejemplo 10:00 - 11:00

 const getTimeDiffInMins = (endTime, startTime) => (+new Date(endTime) - +new Date(startTime)) / (60 * 1000); const getMultipleTimeSlots = (data) => { const diff = getTimeDiffInMins(data.end_date_time, data.start_date_time); const totalSlots = diff / data.duration; const totalBuffer = data.buffer_between_slots * totalSlots; const availableSlots = (diff - totalBuffer) / 60; return availableSlots; };

¿alguna sugerencia?

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

0

Solo debería necesitar un búfer entre ranuras, por lo que el número de búferes es uno menos que el número de ranuras, es decir, desea resolver:

 n * slotTime + (n - 1) * bufferTime == totalTime

tal que:

 totalTime <= diff

Puede hacerlo agregando el búfer a totalTime y dividiendo por slotTime + bufferTime , luego nivelando el resultado para obtener el número total de espacios disponibles más los búferes. Luego puede simplemente iterar para producir la hora de inicio y finalización requerida. P.ej

 let startDateTime = new Date(2021,7,8,11,30); // 20 Aug 2021 11:30 let endDateTime = new Date(2021,7,8,22); // 20 Aug 2021 22:00 let duration = 60; // minutes let bufferBetweenSlots = 30; // minutes let diff = (endDateTime - startDateTime) / 6e4; // minutes let numberOfSlots = Math.floor((diff + bufferBetweenSlots) / (duration + bufferBetweenSlots)); // minutes let slots = []; let time = new Date(startDateTime); for (let i = 0; i < numberOfSlots; i++) { // Add the slot start time slots[i] = {start: time.toString()}; // Increment time to end of slot time.setMinutes(time.getMinutes() + duration); // Add the end time slots[i].end = time.toString(); // Increment time to end of buffer time.setMinutes(time.getMinutes() + bufferBetweenSlots); } console.log(slots);

Cambié la hora de finalización a las 22:00 para mostrar que solo se llenan las franjas horarias. Depende de usted si inserta marcas de tiempo o objetos de fecha en la matriz de ranuras . Solo recuerde, si agrega fechas, copie la fecha como:

 slots[i] = {start: new Date(+time)}; ... slots[i].end = new Date(+time);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Gracias @RobG por tomarse el tiempo para responder. así es como me las arreglé para slove it.

 const getTimeDiffInMins = (endTime, startTime) => (+new Date(endTime) - +new Date(startTime)) / (60 * 1000); const convertToMilliSecs = (value) => value * 60 * 1000; // coming from the db const data = { duration: 60, buffer_between_slots: 30, start_date_time: '2021-08-20T10:30:00Z', end_date_time: '2021-08-20T20:30:00Z', }; const { duration: a, buffer_between_slots: b, end_date_time: x, start_date_time: y, } = data; const duration = getTimeDiffInMins(x, y); const slotDuration = a; const totalSlots = a + b; const numberOfSlots = Math.floor(duration / totalSlots); const slotsAvailable = [...Array(numberOfSlots).keys()].map((slotNumber) => { const slotStart = (slotNumber - 1) * totalSlots; const slotEnd = slotStart + slotDuration; return { start: +new Date(y) + convertToMilliSecs(slotStart), end: +new Date(y) + convertToMilliSecs(slotEnd), }; }); /* Now we can format the time however we want I'm using momentjs: moment(new Date(slot.start)).format('h:mma') */ console.log(slotsAvailable);

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