我遇到了问题,我正在使用时间模式,现在我有两个值是:
var startTime = "05:45:00 22/05/19"
var endTime = "14:45:00 22/05/19"
问题是,我需要按小时来解析此日期。
结果必须为:
05:45 - 06:00
06:00 - 07:00
07:00 - 08:00
08:00 - 09:00
09:00 - 10:00
10:00 - 11:00
11:00 - 12:00
12:00 - 13:00
13:00 - 14:00
14:00 - 14:45
您可以看到我不需要标准的解析时间。
所以我尝试使用这种方法:
function addMinutes(time, minutes) {
var date = new Date(new Date('01/01/2015 ' + time).getTime() + minutes * 60000);
var tempTime = ((date.getHours().toString().length == 1) ? '0' + date.getHours() : date.getHours()) + ':' +
((date.getMinutes().toString().length == 1) ? '0' + date.getMinutes() : date.getMinutes()) + ':' +
((date.getSeconds().toString().length == 1) ? '0' + date.getSeconds() : date.getSeconds());
return tempTime;
}
var starttime = "05:45:00";
var interval = "60";
var endtime = "14:45:00";
var timeslots = [starttime];
while (starttime != endtime) {
starttime = addMinutes(starttime, interval);
timeslots.push(starttime);
}
console.log(timeslots);
输出:
0: "05:45:00"
1: "06:45:00"
2: "07:45:00"
3: "08:45:00"
4: "09:45:00"
5: "10:45:00"
6: "11:45:00"
7: "12:45:00"
8: "13:45:00"
9: "14:45:00"
但是对我来说,这不好,再加上结束日期是下一个日期,则无法计算
答案 0 :(得分:2)
这是一个解决方案: 从开始时间到结束时间循环播放,并检查我们是在第一个小时还是结束时间做一些特定的代码,否则渲染startHour-startHour +1
var startTime = "15:00"
var endTime = "00:15"
var timeslots = [];
var startOffset = parseInt(startTime.substring(0,2));
var endOffset = parseInt(endTime.substring(0,2));
if(endOffset < startOffset){
endOffset+= 24;
}
for(var i = startOffset;i<=endOffset;i++){
var begin,end;
var currentOffset = i < 24 ? i : i - 24;
if(i==startOffset){
begin = startTime;
}else{
begin = currentOffset < 10 ? "0" + currentOffset +":00" : currentOffset +":00" ;
}
if(i==endOffset){
end = endTime;
}else{
end = currentOffset < 9 ? "0" + (currentOffset+1) +":00" :(currentOffset+1) +":00";
}
timeslots.push(begin + " : " + end);
}
console.log(timeslots);
答案 1 :(得分:1)
我是这样做的。如果要删除秒,它仍然需要额外的解析。
function timestringToDate(time) {
var temptime = new Date();
var splittedtime = time.split(':');
temptime.setHours(splittedtime[0], splittedtime[1], 0);
return temptime;
}
var starttime = "05:45:00";
var endtime = "14:45:00";
var starttimeobj = timestringToDate(starttime);
var endtimeobj = timestringToDate(endtime);
var slotarray = [];
var slotstart, slotend;
for(var t = starttimeobj; t.getHours() < endtimeobj.getHours(); ) {
slotstart = t.toLocaleTimeString('en-US', { hour12: false });
t.setHours(t.getHours()+1);
if(t.getMinutes !== 0)
t.setMinutes(0);
slotend = t.toLocaleTimeString('en-US', { hour12: false });
slotarray.push(slotstart + ' - ' + slotend);
}
slotarray.push(slotend + ' - ' + endtimeobj.toLocaleTimeString('en-US', { hour12: false })); /* I add last hour */
console.log(slotarray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>