在Javascript中使用毫秒获取时间差计算

在Javascript中使用毫秒获取时间差计算,javascript,Javascript,我想用Javascript中的毫秒值找出两个时间之间的差异。正如您在下面的快照中看到的,我在Excel中计算了两个时间值。我的期望值与JS代码的计算值完全相同。我尝试了一些代码片段,但在几秒钟内得到了一些细微的差别 JavaScript新日期() new Date()使用当前日期和时间创建新的日期对象: 变量d1='2020-12-15 01:00:23.788'; var d2='2020-12-15 01:00:55.482'; var date1=新日期(d1); var date2

我想用Javascript中的毫秒值找出两个时间之间的差异。正如您在下面的快照中看到的,我在Excel中计算了两个时间值。我的期望值与JS代码的计算值完全相同。我尝试了一些代码片段,但在几秒钟内得到了一些细微的差别


JavaScript新日期()
new Date()使用当前日期和时间创建新的日期对象:

变量d1='2020-12-15 01:00:23.788'; var d2='2020-12-15 01:00:55.482'; var date1=新日期(d1); var date2=新日期(d2); //日期2+=500; //date2=新日期(date2); //日期2.设置毫秒(5); var date1_ms=date1.getTime(); var date2_ms=date2.getTime(); //以毫秒为单位计算差值 var差异=日期2\u ms-日期1\u ms; //取出毫秒数 差值μms=差值μms/1000; var秒数=数学下限(差值%60); 差值μms=差值μms/60; var分钟数=数学下限(差值%60); 差值μms=差值μms/60; var小时=数学下限(差异%24); var demo=小时+小时+分钟+分钟和秒+秒+差分; document.getElementById(“demo”).innerHTML=demo;
从毫秒计算小时、分钟和秒的算法有缺陷。除此之外,还必须在除法之前从差值中减去结果,而不是计算模运算的结果。因为如果是这样的话,差异仅显示为31秒,即使差异更大。使用正确的算法检查以下小提琴:

var d1=“2020-12-15 01:00:23.788”;
var d2=“2020-12-15 01:00:55.482”;
var date1=新日期(d1);
var date2=新日期(d2);
var date1_ms=date1.getTime();
var date2_ms=date2.getTime();
var差异=日期2\u ms-日期1\u ms;
var毫秒=差异\u毫秒%1000;//小于1秒的毫秒数
差值μms=(差值μms-毫秒)/1000;//转换为秒
var秒数=差异\u ms%60;//少于一分钟的秒数
差值μms=(差值μms-秒)/60;//换算成分钟
var分钟数=差异\u毫秒%60;//少于一小时的分钟数
差分时间=(差分时间-分钟)/60;//换算成小时
var小时数=差异_ms%24;
document.getElementById(“输出”).innerHTML=hours+“h”+minutes+“m”+seconds+“s”+毫秒+“ms”


您已经问过了。如果这是相同的,那么下面是代码

函数splitInNumberArray(str){
返回str
.替换(/(:\)/g,“”)
.拆分(“”)
.map((x)=>parseInt(x));
}
函数convertToMilliseconds(时间数组){
返回(
时间数组[0]*60*60*1000+
时间数组[1]*60*1000+
时间数组[2]*1000+
时间数组[3]
);
}
函数msToTime(持续时间){
var毫秒=parseInt((持续时间%1000)/100),
秒=数学楼层((持续时间/1000)%60),
分钟=数学楼层((持续时间/(1000*60))%60),
小时=数学楼层((持续时间/(1000*60*60))%24);
小时=小时<10?“0”+小时:小时;
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
返回时数+“:“+分钟+”:“+秒+”+毫秒;
}
//此函数取自https://stackoverflow.com/questions/19700283/how-to-convert-time-milliseconds-to-hours-min-sec-format-in-javascript
函数解析持续时间(持续时间){
让剩余=持续时间;
让小时数=数学楼层(剩余/(1000*60*60));
剩余=剩余%(1000*60*60);
分钟=数学楼层(剩余/(1000*60));
剩余=剩余%(1000*60);
让秒=数学楼层(剩余/1000);
剩余=剩余%1000;
让毫秒=保持;
返回{
小时,
会议记录,
秒,
毫秒,
};
}
功能数字(n){
返回值(n<10?“0”:“)+n;
}
//********************************
const time1=“01:00:55.482”;
const time2=“01:00:23.788”;
常量numberray1=splitInNumberArray(time1);
const numberray2=splitInNumberArray(time2);
const msTime1=转换毫秒(numberray1);
const msTime2=转换毫秒(numberArray2);
const diff=msTime1-msTime2;
常数{小时,分钟,秒,毫秒}=解析持续时间(差异);
console.log(
`${time1}-${time2}=${mintwodights(小时)}:${mintwodights(
会议记录
)}:${minTwoDigits(秒)}.${毫秒}`

);你的代码是正确的,你到底想做什么?毫秒与Excel不一样。你半小时前才问过这个问题。请不要创建这样不必要的副本,您的第一个问题下的讨论本可以很容易地在这里继续-