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

Calculating difference in times in 24 hour time format in Javascript

本文关键字:格式 计算 时间差 时间 小时 Javascript 中以      更新时间:2023-09-26

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

  • 输入格式将始终为 HHMM

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

感谢您的投入。

-------------------蹩脚的诱惑--------------------

<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>

看看这个脚本:

它使用您所说的 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。当两个转换时间都不为 false 时,函数将继续。它相互减去值。如果该值小于零,则将其转换为正数。然后将秒转换回小时和分钟,并显示在差分输入中。享受。