javascript - 如何显示开始时间和结束时间之间的时间

标签 javascript momentjs

应该是,我有开始和结束时间。

给定示例:

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

现在,我想显示该范围之间的时间,间隔为 5 分钟,从 startTime 开始额外时间为 3 小时,endTime 为负 1 小时。所以基于给定时间范围的样本结果将是:

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 小时 = 03:30 PM

最后显示时间为02:00 AM,因为03:00 AM - 1 小时 = 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';

我认为问题是由于下午到上午时段造成的。我们怎样才能解决这个问题呢?请帮忙。

最佳答案

只要满足以下一个条件即可:

  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>

关于javascript - 如何显示开始时间和结束时间之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836487/

相关文章:

typescript 重复导入 'moment'

timezone - chart.js - 显示控制时间刻度时区

javascript - 如何使用 moment js 从日期时间字符串中获取 am pm

javascript - 仅匹配以特定字符结尾的行

javascript - TinyMCE 4.0 上的点击事件

javascript - 我如何使用这个新的 chart.js 扩展?

javascript - momentjs - 如何尊重服务器日期时间

javascript onclick,匿名函数

javascript - javascript中变量名后面的*是什么

javascript - 在一年的最后一周添加 1 周时出现 Moment.js 错误