2016-01-13 111 views
-1

之间的时隙我有开始时间结束时间,和间隔获取的开始时间和结束时间

我必须得到开始时间和结束时间之间的时间段。

我有

var starttime = "09:50:00"; 
var endtime = "10:50:00"; 
var interval = "10"; 

我想要的time slots作为阵列

var timeslots = ["09:50:00","10:00:00","10:10:00","10:20:00","10:30:00","10:40:00","10:50:00"]; 

starttimeendtimeinterval可以变化。如何根据需要获得时隙?

要添加的时间间隔为时间我有:

function addMinutes(time, minsToAdd) { 
    function D(J){ return (J<10? '0':'') + J;}; 
    var piece = time.split(':'); 
    var mins = piece[0]*60 + +piece[1] + +minsToAdd; 

    return D(mins%(24*60)/60 | 0) + ':' + D(mins%60); 
} //this is working 

我试图下面以生成time slot阵列。

var starttime = "09:50:00"; 
var interval = "10"; 
var endtime = "10:50:00"; 
var timeslots =[stime]; 


while(starttime ==endtime){ 

starttime = addMinutes(starttime , interval); 
timeslots.push(stime); 

} 
alert(timeslots.length); 

但数组的长度显示1,意味着不工作...

请帮我纠正这种..或帮助我与任何其他方式...

回答

2

我做不到让你的addMinutes函数正常工作(chrome不断变得没有响应),所以我实现了我自己的。

我没有看到你宣布stime的地方,但我改变stime到starttime,并改变了starttime == endtime到starttime!= endtime和代码工程。

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 = "09:50:00"; 
var interval = "10"; 
var endtime = "10:50:00"; 
var timeslots = [starttime]; 


while (starttime != endtime) { 

    starttime = addMinutes(starttime, interval); 
    timeslots.push(starttime); 

} 
alert(timeslots); 

DEMO:

https://jsfiddle.net/vay9rL7g/

结果:

09:50:00,10:00:00,10:10:00,10:20: 00,10:30:00,10:40:00,10:50:00

+0

非常感谢你.. – next2u

+0

除非间隔'符合'整个次数,否则将多次循环槽(starttime!= endtime) – Dopele

0

$(function(){ 
 
    var starttime = "09:50:00"; 
 
    var endtime = "10:50:00"; 
 
    var interval = "10"; 
 
    var startTimeInMin = convertToMin(starttime); 
 
    var endTimeInMin = convertToMin(endtime); 
 

 
    timeIntervel = parseInt(endTimeInMin-startTimeInMin)/(parseInt(interval)*60); 
 

 
    nextSlot = starttime; 
 

 
    slotArra = [nextSlot]; 
 
    for(i=0; i<timeIntervel; i++){ 
 
    var nextSlot = getNextSlot(nextSlot, interval); 
 
    slotArra.push(nextSlot); 
 
    } 
 

 
    alert(slotArra) 
 

 
    function convertToMin(inputTime){ 
 
    inputTime = inputTime.split(':'); 
 
    var hrinseconds = parseInt(inputTime[0])*3600; 
 
    var mininseconds = parseInt(inputTime[1])*60; 
 
    return parseInt(hrinseconds)+parseInt(mininseconds)+parseInt(inputTime[2]) 
 
    } 
 

 
    function getNextSlot(starttime, interval) { 
 
    var piece = starttime.split(':'); 
 
    var hour = piece[0]; 
 
    var minutes = piece[1]; 
 
    var seconds = piece[2]; 
 
    var newMinute = parseInt(minutes)+parseInt(interval) 
 
    if(newMinute>=60){ 
 
     hour = parseInt(hour)+1; 
 
     newMinute = newMinute%60 
 
     if(newMinute==0) 
 
     newMinute = '00'; 
 
    } 
 
    var newTim = hour+':'+newMinute+':'+seconds; 
 
    return newTim; 
 
    } \t 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2

样品输入:

var startTime = "10:00", 
    endTime = "17:00", 
    interval = 30; 

样本输出:

["10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00"] 

源代码:

function parseTime(s) { 
     var c = s.split(':'); 
     return parseInt(c[0]) * 60 + parseInt(c[1]); 
    } 

    function convertHours(mins){ 
     var hour = Math.floor(mins/60); 
     var mins = mins%60; 
     var converted = pad(hour, 2)+':'+pad(mins, 2); 
     return converted; 
    } 

    function pad (str, max) { 
     str = str.toString(); 
     return str.length < max ? pad("0" + str, max) : str; 
    } 

    function calculate_time_slot(start_time, end_time, interval = "30"){ 
     var i, formatted_time; 
     var time_slots = new Array(); 
     for(var i=start_time; i<=end_time; i = i+interval){ 
     formatted_time = convertHours(i); 
     time_slots.push(formatted_time); 
     } 
     return time_slots; 
    } 

    var startTime = "10:00"; 
    var endTime = "17:00"; 

    var start_time = parseTime(startTime), 
     end_time = parseTime(endTime), 
     interval = 30; 

    var times_ara = calculate_time_slot(start_time, end_time, interval); 

    console.log(times_ara); 

JS小提琴链接:Check JS fiddle