Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!