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

1

Предположим, у меня есть время начала и окончания.

Пример:

var startTime = '12:30 PM';
var endTime = '03:00 AM';

Теперь я хочу отображать время между этим диапазоном с интервалом 5 минут, 3 часа дополнительного времени от startTime и минус 1 час для endTime. Таким образом, результат выборки, основанный на заданном временном интервале, будет:

03:30 PM
03:35 PM
03:40 PM
03:45 PM
03:50 PM
03:55 PM
04:00 PM
04:05 PM
....
....
02:00 AM

Первый раз для показа будет 03:30 PM потому что 12:30 PM + 3 hours = 03:30 PM

И последний раз для показа будет 02:00 AM потому что 03:00 AM - 1 hour = 02:00 AM

Я использую moment.js. Вот мой код:

var startTime = '12:30 PM';
var endTime = '03:00 AM';

var startTime2 = '12:30 PM';
var endTime2 = '05:00 PM';

console.log(intervals(startTime, endTime));      // this is not working
console.log(intervals(startTime2, endTime2));    // this is working

function intervals(start, end) {
  var start = moment(start, 'hh:mm a').add(3, 'h');
  var end = moment(end, 'hh:mm a').subtract(1, 'h');

  var result = [];
  var current = moment(start);
  while (current <= end) {
    result.push(current.format('hh:mm a'));
    current.add(5, 'minutes');
  }
  return result;
}

Моя проблема в том, что если заданное время

var startTime = '12:30 PM';
var endTime = '03:00 AM';

не будет работать. Он работает только в том случае, если заданное время будет

var startTime2 = '12:30 PM';
var endTime2 = '05:00 PM';

Я думаю, что проблема связана с периодами PM-AM. Как мы можем это решить? Пожалуйста помоги.

  • 0
    Можете ли вы опубликовать фрагмент кода, что именно не работает?
  • 0
    проблема в том, что у вашего первого конечного времени должен быть 1 дополнительный день :), поэтому вам нужно добавить день в конечный локальный var, если end меньше, чем start.
Показать ещё 3 комментария
Теги:
momentjs

1 ответ

1
Лучший ответ

Просто выполните это одно условие:

  if(end < start)
    end = end.add(1, 'd');

Проверьте полный код ниже:

var startTime = '12:30 PM';
var endTime = '03:00 AM';

var startTime2 = '12:30 PM';
var endTime2 = '05:00 PM';

console.log(intervals(startTime, endTime));      // this is not working
console.log(intervals(startTime2, endTime2));    // this is working

function intervals(start, end) {
  var start = moment(start, 'hh:mm a').add(3, 'h');
  var end = moment(end, 'hh:mm a').subtract(1, 'h');
  if(end < start)
    end = end.add(1, 'd');
  var result = [];
  var current = moment(start);
  while (current <= end) {
    result.push(current.format('hh:mm a'));
    current.add(5, 'minutes');
  }
  return result;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.js"></script>
  • 0
    Хорошо! это оно. Спасибо. работает. Продолжай делиться :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню