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

294
Vistas
Quiero poder establecer diferentes intervalos de tiempo

Tengo este código que ayuda a generar una serie de horas en función de una hora de inicio y una hora de finalización, funciona bien durante 30 minutos o menos, pero no durante 1 hora (60) o más...

 export const getTimes = (start, end, timeInterval = 30) => { if (!start || !end) return start = parseInt(start) * 2 + (+start.slice(-2) > 0) end = parseInt(end) * 2 + (+end.slice(-2) > 0) + 1 return Array.from({ length: end - start }, (_, i) => [ (i + start) >> 1, ((i + start) % 2) * Number(timeInterval), ]).map(([h, m]) => `${h % 12 || 12}:${m}${m.toString().length === 1 ? 0 : ""} ${ "AP"[+(h > 11)] }M`.replace(/bdb/g, "0$&") ) } console.log(getTimes("9:00", "22:00"))

el resultado es

 ["9:00 AM","9:30 AM","10:00 AM","10:30 AM","11:00 AM","11:30 AM","12:00 PM","12:30 PM","1:00 PM","1:30 PM","2:00 PM","2:30 PM","3:00 PM","3:30 PM","4:00 PM","4:30 PM","5:00 PM","5:30 PM","6:00 PM","6:30 PM","7:00 PM","7:30 PM","8:00 PM","8:30 PM","9:00 PM","9:30 PM","10:00 PM"]

pero por 1 hora(60)

 ["9:00 AM","9:60 AM","10:00 AM","10:60 AM","11:00 AM","11:60 AM","12:00 PM","12:60 PM","1:00 PM","1:60 PM","2:00 PM","2:60 PM","3:00 PM","3:60 PM","4:00 PM","4:60 PM","5:00 PM","5:60 PM","6:00 PM","6:60 PM","7:00 PM","7:60 PM","8:00 PM","8:60 PM","9:00 PM","9:60 PM","10:00 PM"]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su intervalo debe basarse en minutos. Agregue los minutos a la hora de inicio. Convierta los minutos totales a HH:MM. (tenga en cuenta que no hice el AM / PM, puede averiguarlo)

 function getMins(time) { const parts = time.split(":"); return +parts[0] * 60 + +parts[1]; } function convertMins(totalMinutes) { const minutes = (totalMinutes % 60).toString().padStart(2, '0'); let hrs = (totalMinutes-minutes)/60; const hours = hrs.toString().padStart(2, '0'); return `${hours}:${minutes}`; } function getTimes(start, end, timeInterval = 30) { const startMins = getMins(start); const endMins = getMins(end); return Array.from({ length: Math.ceil((endMins - startMins) / timeInterval) + 1 }) .map((_, i) => convertMins( Math.min(startMins + i * timeInterval, endMins))); } console.log(getTimes("9:00", "22:00")) console.log(getTimes("9:00", "22:00", 20)) console.log(getTimes("9:00", "22:00", 60)) console.log(getTimes("9:00", "22:00", 35)) console.log(getTimes("9:00", "22:00", 180))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Gracias chicos, finalmente lo conseguí.

 function generateTime(start, end, step) { const dt = new Date(`December 17, 1995 ${start}`); const dc = new Date(`December 17, 1995 ${end}`); const rc = []; while (dt <= dc) { rc.push(dt.toLocaleTimeString('en-US',{timeStyle: 'short'})); dt.setMinutes(dt.getMinutes() + step); } return rc; } console.log(generateTime("9:00", "23:00", 90))
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