使用每小时差值填充数组/列表 - 从下拉列表中给出两个时间值

时间:2012-09-12 19:16:37

标签: javascript jquery asp.net jquery-plugins timepicker

我正在尝试使用时间减法的值填充数组/列表。我有这种格式的开始时间“09.00 AM”和结束时间相同的格式ex:“06.00 PM”,两次都来自两个下降(值从上午9点到晚上9点,每小时增量)这实际上是jquery时间选择器控件。这就是我想要做的...在用户选择两个时间之后,我想填充一个数组/列表,其中包含落在两个选定时间值之间的单个“小时”标记值。例如:选择上午9点和下午12点应该给我值{“10.00 AM”,“11. AM AM”} ..选择上午10点到下午4点应该给我{“11.00 AM”,“12.00 PM”,“01.00 PM” ,“02.00 PM”,“03.00 PM”} ..

var FirstTime = container.find('#1time').val();
var SecondTime = container.find('#2time').val(); 

var busyTimes = [];
busyTimes =  getBusyTimes(FirstTime , SecondTime);

功能js:

function getBusyTimes(first, second) {
    var f = first.split(' '), s = second.split(' ');
    if (first == '12.00 AM') f[0] = '0';
    if (first == '12.00 PM') f[1] = 'AM';
    if (second == '12.00 AM') s[0] = '24';
    if (second == '12.00 PM') s[1] = 'AM';
    f[0] = parseInt(f[0], 10) + (f[1] == 'PM' ? 12 : 0);
    s[0] = parseInt(s[0], 10) + (s[1] == 'PM' ? 12 : 0);
    int i = s[0] - f[0];
    // I have difference in hours in "i"
    //From here, I want to make use of value 'i' -- calculate in between   
    // hourly values and return the array back to 
    // original function above.
}

1 个答案:

答案 0 :(得分:2)

我没有对此进行过测试,但它应该适用于您要执行的操作,并且应该比您尝试的计算更快地运行。

function getBusyTimes(first, second){
var timeList = ['12:00 AM','1:00 AM','2:00 AM','3:00 AM']; // finish this list
var firstid  = timeList.indexOf(first);
var secondid = timeList.indexOf(second);
var result = new Array();
for(var i=firstid; i<=secondid; i++ ){
    result.push(timeList[i]);
}
return result;
}