Вывод времени, которое делится на 5

Задача такая: через js мне надо, чтобы выводились минуты, которые делятся на 5.

Пример: 12:05, 12:10, 12:15 ... 12:55, 13:00 и так дальше.

Если сейчас 12:02, то чтобы выводило 12:00, если 12:04, то опять же 12:00, если время равняется 12:05, то выводило 12:05.


Ответы (2 шт):

Автор решения: Zhihar

можно сделать просто в лоб - дешево и сердито:

let time = "12:07";
time = time.substr(0, time.length - 1) + ['0', '0', '0', '0', '0', '5', '5', '5', '5', '5'][Number.parseInt(time[time.length - 1])]

еще более грубее и сердитее (чтобы с числами не иметь дело вообще):

time = time.substr(0, time.length - 1) + {'0': '0', '1': '0', '2': '0', '3': '0', '4': '0', '5': '5', '6': '5', '7': '5', '8': '5', '9': '5'}[time[time.length - 1]]

чуть короче, но также сердито:

time = time.substr(0, time.length - 1) + ({'0': '0', '1': '0', '2': '0', '3': '0', '4': '0'}[time[time.length - 1]] || '5')
→ Ссылка
Автор решения: entithat

Проще всего разделить на часы и минуты, и для минут найти ближайшее число, которое меньше либо равно минутам и нацело делится на 5.

const t = '12:06'.split(':');
console.log(`${t[0]}:${String(t[1] - (t[1] % 5)).padStart(2, '0')}`);

Для нескольких часов:

const times = ['12:02', '12:09', '12:11', '12:15'];
for (const t of times) {
  const _t = t.split(':');
  console.log(`${_t[0]}:${String(_t[1] - (_t[1] % 5)).padStart(2, '0')}`);
}

→ Ссылка