在javascript中以秒为单位计算两个时间输入的差异

在javascript中以秒为单位计算两个时间输入的差异,javascript,Javascript,我试图获得两个时间输入之间的差异,并将其显示为HH:mm:ss 为显示创建了一个带有id=“diff”的输入框。这段代码的工作长达24小时的差异,这是所有我需要的 但是,当开始或结束时间的秒数输入为0时(例如,晚上11:10:00),显示屏会反映NaN 有人知道这里有什么问题吗 var start=document.getElementById(“start”).value; var end=document.getElementById(“end”).value; 功能差异(开始、结束){

我试图获得两个时间输入之间的差异,并将其显示为HH:mm:ss

为显示创建了一个带有
id=“diff”
的输入框。这段代码的工作长达24小时的差异,这是所有我需要的

但是,当开始或结束时间的秒数输入为0时(例如,晚上11:10:00),显示屏会反映NaN

有人知道这里有什么问题吗

var start=document.getElementById(“start”).value;
var end=document.getElementById(“end”).value;
功能差异(开始、结束){
start=start.split(“:”);
end=end.split(“:”);
var startDate=新日期(0,0,0,开始[0],开始[1],开始[2],0);
var endDate=新日期(0,0,0,结束[0],结束[1],结束[2],0);
//如果第二天结束时间交叉,则计算有效。例如,晚上11点到凌晨2点
if(endDate.getTime()

那是因为你的秒数“00”永远都不会通过。只过了几分钟和几小时。因此,发生这种情况时,您的日期无效

只需检查拆分数组的最后一个参数,如果不存在,则传递零

尝试更改此选项:

var startDate = new Date(0, 0, 0, start[0], start[1], start[2], 0);
var endDate = new Date(0, 0, 0, end[0], end[1], end[2], 0);
为此:

var startDate = new Date(0, 0, 0, start[0], start[1], start[2] ? start[2] : 0, 0);
var endDate = new Date(0, 0, 0, end[0], end[1], end[2] ? end[2] : 0, 0);

如果您只是将这两个数据解析为unix时间,减去它并再次更改为date对象(随时),这将不会更容易。嗯……你可以接受这个答案。:)