gpt4 book ai didi

javascript - 如何计算 24 小时制中两个时间之间的时差

转载 作者:行者123 更新时间:2023-11-28 15:52:34 24 4
gpt4 key购买 nike

我用 JavaScript 生成的一些代码有问题。我想计算 24 小时制的两个时间之间的差异。数据来自两个输入时间字段:

<input type="time" id="start" />
<input type="time" id="end" />

因此,时间以字符串 00:00 形式出现,这对数字计算没有帮助。

我的解决方法是从末尾减去开头。如果结束时间较长,则此方法非常有效,但如果结束时间超过 11:00 (00:00),我最终会得到一个负数。如果结束值低于开始值,我尝试将 24 添加到结果中,但仍然得到负数。这似乎是一个愚蠢的问题,但我的数学从来都不是那么好。

var numHours;
if(time_end < time_start){
numHours = parseInt(t_e.substring(0,2)) - parseInt(t_s.substring(0,2)) + 24;
}else{
numHours = parseInt(t_e.substring(0,2)) - parseInt(t_s.substring(0,2));
}

可能(肯定)有更好的方法来做到这一点,但我怎样才能让它发挥作用。我也可以计算分钟以获得更准确的时差。

最佳答案

所提供的解决方案并未有效地考虑日期边界。所有这些都假设差异小于 24 小时。这意味着我们对开始和结束 23 小时 59 分钟之间的差异有一个上限,否则我们会对结果感到困惑。但请记住,正如所描述的,实际用例是事件于晚上 11 点开始并于凌晨 1 点结束(从 23:00 到 1:00),两者之间的时间差是 2 小时而不是 22 小时。

function calculateTime(e) {
var startTime = $('#start').val();
var endTime = $('#end').val();

var startTimeArray = startTime.split(":");
var startInputHrs = parseInt(startTimeArray[0]);
var startInputMins = parseInt(startTimeArray[1]);

var endTimeArray = endTime.split(":");
var endInputHrs = parseInt(endTimeArray[0]);
var endInputMins = parseInt(endTimeArray[1]);

var startMin = startInputHrs*60 + startInputMins;
var endMin = endInputHrs*60 + endInputMins;

var result;

if (endMin < startMin) {
var minutesPerDay = 24*60;
result = minutesPerDay - startMin; // Minutes till midnight
result += endMin; // Minutes in the next day
} else {
result = endMin - startMin;
}

var minutesElapsed = result % 60;
var hoursElapsed = (result - minutesElapsed) / 60;

alert ( "Elapsed Time : " + hoursElapsed + ":" + (minutesElapsed < 10 ?
'0'+minutesElapsed : minutesElapsed) ) ;
}

我没有检查,但我相信你可以这样做,但我没有检查它:

var result = endMin - startMin;
if (result < 0 ) result = (24*60) + result;

关于javascript - 如何计算 24 小时制中两个时间之间的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com