gpt4 book ai didi

javascript - 如何计算javascript中时间输入之间的差异?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:30 25 4
gpt4 key购买 nike

我想计算我的工作时间。当我输入时它工作正常

08:00 - 09:00 = 01:00

但是当我这次输入的时候

23:30 - 01:30 = 10:00 

它应该返回 02:00

function pad(num) {
return ("0" + num).slice(-2);
}

function diffTime(start, end) {
var s = start.split(":"),
sMin = +s[1] + s[0] * 60,
e = end.split(":"),
eMin = +e[1] + e[0] * 60,
diff = eMin - sMin;

if (diff < 0) {
sMin -= 12 * 60;
diff = eMin - sMin
}
var h = Math.floor(diff / 60),
m = diff % 60;
return "" + pad(h) + ":" + pad(m);
}

document.getElementById('button').onclick = function() {
document.getElementById('delay').value = diffTime(
document.getElementById('timeOfCall').value,
document.getElementById('timeOfResponse').value
);
}
<input type="time" id="timeOfCall">
<input type="time" id="timeOfResponse">
<button type="button" id="button">CLICK</button>
<input type="time" id="delay">

最佳答案

我会使用 Date 对象来计算时间差。由于您只对时间感兴趣,因此可以使用任何日期来构造有效的日期字符串。你得到 10 小时的原因是因为没有日期显示第二天凌晨 1 点(这是根据我对你的问题的理解)。

您可以执行类似下面的操作来完成工作。

const pad = num => (num < 10) ? `0${num}` : `${num}`;

const addADay = (start, end) => {
const sHour = parseInt(start.split(':')[0], 10);
const eHour = parseInt(end.split(':')[0], 10);
return (eHour < sHour);
};

const diffTime = (start, end) => {
const startDate = new Date(`2019/01/01 ${start}:00`);
const endDate = addADay(start, end)
? new Date(`2019/01/02 ${end}:00`)
: new Date(`2019/01/01 ${end}:00`);
const diff = endDate.getTime() - startDate.getTime();
const hours = Math.floor(diff / 3600000);
const min = (diff - (hours * 3600000)) / 60000;
return `${pad(hours)}:${pad(min)}`;
}

console.log(diffTime('08:00','09:00')); // returns 01:00
console.log(diffTime('23:00','01:30')); // returns 02:30

关于javascript - 如何计算javascript中时间输入之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587369/

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