Javascript JS中以毫秒为单位的时间计算

Javascript JS中以毫秒为单位的时间计算,javascript,Javascript,我想用Javascript中的毫秒值找出两个时间之间的差异。 正如您在下面的快照中看到的,我在Excel中计算了两个时间值。 我的期望值与JS代码的计算值完全相同。 我尝试了一些代码片段,但在几秒钟内得到了一些细微的差别 var 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);

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

var 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
JavaScript新日期()
new Date()使用当前日期和时间创建新的日期对象:


JS在正确实现时也会这样做

我尝试了更多有趣的时间

//Excel:02:10:55482-01:09:23788=01:01:31694
const fmtTime=日期=>{
const hours=`0${date.getHours()-1}`.slice(-2);
const minutes=`0${date.getMinutes()}`.slice(-2);
const seconds=`0${date.getSeconds()}`.slice(-2);
常量ms=`00${date.getmillizes()}`.slice(-3);
返回`${hours}:${minutes}:${seconds}.${ms}`
}
const from=“01:09:23788”
const to=“02:10:55.482”
常数re=/(\d{2}):(\d{2}):(\d{2})。(\d{3})/;
常量[m1,fromhh,frommm,fromss,fromms]=from.match(re);
常数[m2,tohh,tomm,toss,tomms]=到匹配(re);
//方法一
设d=新日期()
d、 设定小时数(从小时、从毫米、从秒、从毫秒)
const fromTime=d.getTime()
d、 设定时间(tohh、tomm、toss、tomm)
const toTime=d.getTime()
const diffInMS1=toTime-fromTime
console.log(diffInMS1)
d=新日期(diffInMS1);
控制台日志(fmtTime(d))
//方法2-注意我需要转换为int,其中我只添加(+fromms)
设fromMS=(fromhh*60*60*1000)+(frommm*60*1000)+(fromss*1000)+fromMS;
让toMS=(tohh*60*60*1000)+(tomm*60*1000)+(toss*1000)+tomms;
常数diffInMS2=toMS-fromMS;
console.log(diffInMS2)
d=新日期(diffInMS2);
console.log(fmtTime(d))
函数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(秒)}.${毫秒}`

);有意见吗?。。。