I want to be able to set different time intervals Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of I want to be able to set different time intervals without wasting too much if your time.

The question is published on by Tutorial Guruji team.

I have these code that helps generate an array of times based on a start and an end time, it works well for 30 mins and less, but doesn’t for 1 hour(60) and above…

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"))

the result is

["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"]

but for 1 hour(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"]

Answer

Your interval should be based off of minutes. Add the minutes to the start time. Convert the total minutes to HH:MM. (note I did not do the AM/PM, you can figure that out)

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))
We are here to answer your question about I want to be able to set different time intervals - If you find the proper solution, please don't forgot to share this with your team members.

Related Posts

Tutorial Guruji