在Javascript中以24小时时间格式计算时间差异

时间:2015-01-13 21:21:38

标签: javascript

如何通过Javascript以HHMM格式计算两次之间的持续时间。

  • 输入格式始终为HHMM

  • 输入时间将始终为同一天。

感谢您的投入。

------------------- lame attempt --------------------

<html>
<div>
STA:<input type="text" id="STA" onClick="timed();"> ATA: <input type="text" 

id="ATA"onClick="timed();">

DIFF: <input type="text" id="DIFF" onClick="timed();">
</div>
<div></div>

</html>
<script>
function timed(){
var x=0;
var y=0;
var o=0;
var l=0;
var a=0;
var b=0;
o=document.getElementById("STA").value;
l=document.getElementById("ATA").value;
a=o/100;
b=l/100;
x=a.split('.');
y=b.split('.');
document.getElementById("DIFF").value=x[0]-y[0]+":"+x[1]-y[1];
}

</script>

1 个答案:

答案 0 :(得分:1)

看一下这个脚本:

它使用您说的提供HHMM格式的输入。

function timed(){
    var time1 = document.getElementById("STA").value;
    var time2 = document.getElementById("ATA").value;
    if ( time1.match(/^[0-9]{4}$/g) && time2.match(/^[0-9]{4}$/g) )
    {
        //lets calculate the difference. But values consist of four digits.
        var time1Seconds = toSeconds(time1.substr(0,2), time1.substr(2));
        var time2Seconds = toSeconds(time2.substr(0,2), time2.substr(2));

        if (!time1Seconds || !time2Seconds)
        {
            //input is not correct.
            return false;
        }

        var difference = time1Seconds - time2Seconds;
        if (difference < 0)
        {
            difference = Math.abs(difference);
        }
        var hours = parseInt(difference/3600) 
        hours = hours < 10 ? "0" + hours : hours;
        var minutes =  parseInt((difference/3600) % 1 *60)
        minutes = minutes < 10 ? "0" + minutes : minutes;

        document.getElementById("DIFF").value =  hours + ":" + minutes;
    }
}

function toSeconds(hours, minutes)
{
    var seconds = 0;
    if ( (hours >= 0 && hours < 24) && (minutes >= 0 && minutes < 60))
    {
        seconds += (parseInt(hours)*3600) + (parseInt(minutes)*60);
        return seconds
    }
    else
    {
        return false;
    }

}

工作原理。 它从输入中检索值。然后它检查两个输入是否都有4位数字的数字输入。如果不是,这个功能不会返回任何内容。

其次将字符串分成两部分。两个输入的小时和分钟。使用toSeconds将它们转换为秒。此函数检查小时和分钟是否有效,否则此函数返回false。当两个转换时间都不为假时,功能继续。它相互减去值。如果该值低于零,则将其转换为正数。然后将秒数转换回小时和分钟,并显示差值输入。享受。