据说,我有开始和结束时间。
举例:
var startTime = '12:30 PM';
var endTime = '03:00 AM';
现在,我希望显示该范围与5分钟间隔之间的时间,从startTime开始的3小时额外时间和结束时间减去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时期。我们怎么解决这个问题?请帮忙。
答案 0 :(得分: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>