Задать вопрос
Ashlis
@Ashlis

Как разбить промежуток между 2мя метками времени по пол часа?

Использую moment.js
У меня есть:
let start = '10:00'
let end = '18:00'

Как с помощью moment.js разбить промежуток с 10:00 до 18:00 по пол часа?
Чтобы получилось, что - то такое: ['10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '13:00', '13:00' ]
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function getTimes(start, end, interval) {
  const [ s, e ] = [ start, end ].map(n => moment(n, 'HH:mm'));
  const result = [];

  if (s > e) {
    e.add(1, 'day');
  }

  for (; s <= e; s.add(interval, 'minutes')) {
    result.push(s.format('HH:mm'));
  }

  return result;
}

или, без moment.js (разница невелика, сами видите):

function getTimes(start, end, interval) {
  const [ s, e ] = [ start, end ].map(n => new Date(`2000-01-01 ${n}`));
  const result = [];

  if (s > e) {
    e.setDate(e.getDate() + 1);
  }

  for (; s <= e; s.setMinutes(s.getMinutes() + interval)) {
    result.push(s.toTimeString().split(':', 2).join(':'));
    // или
    result.push(s.toLocaleTimeString('ru', {
      hour: '2-digit',
      minute: '2-digit',
    }));
  }

  return result;
}

использовать, понятное дело, так: const times = getTimes('10:00', '18:00', 30);.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы