【问题标题】:How can I display times between start and end time如何显示开始时间和结束时间之间的时间
【发布时间】:2017-11-09 01:58:17
【问题描述】:

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

举个例子:

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 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 期间。我们该如何解决呢?请帮忙。

【问题讨论】:

  • 您能否发布一个代码 sn-p,说明什么是不工作的?
  • 问题是您的第一个结束时间需要多出 1 天 :) 因此,如果 end 小于 start,您需要在 end 本地变量中添加一天。
  • 如果 startTime 是 05:00 PM 而 endTime 是 04:00 PM。你能简单地假设如果结束时间小于开始时间,那么它就是第二天吗?
  • 是的,就是这样。如果结束时间小于开始时间,我只需要添加额外的 1 天。但是怎么做呢?
  • 此问题已作为已删除的相同问题的副本而关闭。鉴于此答案已被接受,我认为应该重新打开它。

标签: javascript momentjs


【解决方案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;
}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.js"&gt;&lt;/script&gt;

【讨论】:

  • 好的!而已。谢谢你。它的工作。继续分享:)
猜你喜欢
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 2013-01-11
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多