试图在两次之间找出半小时的时间

trying to find the amount of half hours in between two times

本文关键字:之间 半小时 时间 两次      更新时间:2023-09-26

我现在想不出来了。。。。我一直在努力计算两个变量之间有多少半小时,这两个变量的开始和结束时间分别是1100和1430

我开始做以下事情,但意识到时间不会超过100!

function process_blocks(startTime,endTime){
var blocks = 0;
startTime = +startTime;
endTime = +endTime;
while(startTime < endTime){
startTime = startTime + 30; // add a half hour, which is a block
blocks++;
}
return blocks;
}
function getHalfHourCount(start, end) {
    start = getMinutes(start);
    end = getMinutes(end);
    var diff;
    if (end < start)
        diff = 24*60 - start + end
    else 
        diff = end - start;
    if (start % 30 != 0)
        diff = diff + start % 30;
    --diff;
    var result = Math.floor(diff / 30);
    document.write(result + "<br />");
    return result;
}
function getMinutes(time) {
    time = String(time);
    if (time.length == 4)
        return parseInt(time.substr(0, 2)) * 60 + parseInt(time.substr(2, 2));
    else
        return parseInt(time.substr(0, 1)) * 60 + parseInt(time.substr(1, 2));
}

查看我的工作演示:http://jsfiddle.net/roberkules/pUfF2/

您需要处理成千上万的;以小时表示的数百个数字;1以分钟为单位。

24小时时间总是有4位数字,所以取前两位,然后比较:

$first = 11;
$second = 14;
$diff = $second - $first; //number of full hours
$fmin = 00;
$smin = 30;
$sdiff = $smin - $fmin; // number of minutes difference
//Do magic to determine how many half hours this is, probably using division and modulo
$halfs = magic($sdiff);
$halfhours = (2 * $diff) + $halfs;

分钟计算间隔,然后除以30:

/**
 * @param startTime integer hours and minutes as an integer like 1100 or 1430
 * @param endTime integer hours and minutes as an integer like 1100 or 1430
 * endTime must be equal to or higher than startTime, else you'll get a negative
 * number of half hours :D
 */
function half_hours_in_interval(startTime, endTime) {
    var hours, minutes, total_minutes;
    hours = Math.floor(endTime / 100) - Math.floor(startTime / 100);
    minutes = (endTime % 100) - (startTime % 100);
    if (minutes < 0) { // this step is probably not even necessary, but just for sanity's sake
        hours -= 1;
        minutes += 60;
    }
    total_minutes = hours * 60 + minutes; // now we know how many minutes are in the interval
    return Math.floor(total_minutes / 30); // or ceil or round or whatever you want
}

此外,不要将函数命名为"process_X",因为它并没有真正描述函数。

其他答案都有效,但如果你试图找出不同日期时间之间发生的30分钟块的数量,你会遇到问题。最好将startTime和endTime转换为Date对象,然后比较每个对象之间30分钟的块数。

下面接受两个日期,并返回两个日期之间完整的30分钟块数。在这个例子中,我添加了一个随机的654分钟,但你可以随意修改:

var now = new Date();
var later = new Date(now);
later.setMinutes(now.getMinutes() + 654);
function process_blocks(startTime,endTime) {
    if (endTime < startTime) {
        alert('endTime must be greater than startTime');
    }
    else {
        alert('There are ' + Math.round((endTime - startTime)/1000/60/30) + ' full 30 minute blocks between the two times' );
    }
}
process_blocks(now,later);

将所有内容转换为分钟数,然后除以30得到结果(如果需要,可以四舍五入)

var start = Math.floor(startTime/100)*60 + (startTime%100);
var end = Math.floor(endTime/100)*60 + (endTime%100);
return (end-start)/30;