日期差异在javascript中不正确
我想让两次约会在几分钟内有所不同,但我尝试了很多方法,但没有得到真正的不同 我试过了日期差异在javascript中不正确,javascript,date,Javascript,Date,我想让两次约会在几分钟内有所不同,但我尝试了很多方法,但没有得到真正的不同 我试过了 var punchIn = "Fri Apr 21 2017 10:57:11 GMT+0530 (IST)"; var punchOut ="Fri Apr 21 2017 13:19:50 GMT+0530 (IST)"; var startDate = new Date(punchIn); var endDate = new Date(punchOut); var workingHours
var punchIn = "Fri Apr 21 2017 10:57:11 GMT+0530 (IST)";
var punchOut ="Fri Apr 21 2017 13:19:50 GMT+0530 (IST)";
var startDate = new Date(punchIn);
var endDate = new Date(punchOut);
var workingHours = (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60);
(endDate.getTime()-startDate.getTime())=8559000将其转换为
它给了我们几个小时
2.3775
但是应该是2小时22分钟 10:57:11+2小时22分钟=13:19:11而不是13:19:50 此外,2.3775小时等于120分钟+(60*0.3775)分钟=22.65分钟 所以计算是正确的,你错过了0.65分(39秒) 您可以使用
(8559000/1000)mod 60计算额外的秒数
var total = (endDate.getTime() - startDate.getTime()) / 1000;
var seconds = total % 60;
total = total - seconds; // Floor to the minutes.
Now the total contains exactly 2:22 minutes (in seconds)
var workingHours=(endDate.getTime()-startDate.getTime())/(1000*60)
这可以完美地将时间转换为分钟,但当你再做一次*60
时,它会将时间转换为小时是的。但有一个转折点。那0.3775就是那22分钟。只是因为它转换成小时,甚至可以工作到0.9,但这些是分钟,只是转换到小数点后。因为没有时间元素
也许您可以在var workingHours=new Date((endDate.getTime()-startDate.getTime())/(1000*60*60))上创建另一个日期对象代码>像这样之类的,但那是你自己想出来的
编辑:
var punchIn=“2017年4月21日星期五10:57:11 GMT+0530(IST)”;
var punchOut=“2017年4月21日星期五13:19:50 GMT+0530(IST)”;
var startDate=新日期(punchIn);
var endDate=新日期(punchOut);
var millis=(endDate.getTime()-startDate.getTime());
var秒=(毫秒/1000)%60;
变量分钟=数学地板(毫/(1000*60))%60;
变量小时=数学下限(毫秒/(1000*60*60))%24;
变量时间=小时+“:”+分钟+“:”+秒;
document.getElementById(“time”).innerHTML+=时间代码>
查看以下内容:
//分钟:'+span.Minutes+'
秒:'+span.Seconds;
}
btn.addEventListener('click',displaySpan);
var els=形式元素;
对于(var i=0,fe,l=els.length;i
/*external.css*/
html,正文{
填充:0;边距:0;
}
梅因先生{
宽度:980px;边距:0自动;
}
#形式{
宽度:600px;高度:50px;背景:绿色;颜色:#fff;填充:10px;
}
#表格>标签{
宽度:40px;
}
#表格>标签,#表格>输入[类型=文本]{
显示:块;浮动:左;
}
#表单>输入[类型=文本]{
宽度:250px;边缘底部:10px;
}
#表格>#开始{
右边距:7px;
}
#表格>#btn{
显示:块;边距:0自动;
}
时间跨度
开始:
停止:
如果你想用昏迷后的分钟数乘以60,那么你的小时数是十进制的。因此:0.3775h*60给出了你想要的22.65min的结果。这其实只是一个简单的数学问题。拿一支铅笔和一张纸,算出数学……然后编码这只不过是一个注释,无助于OP获得预期的结果问题是加法传统秒数,因此添加了如何计算额外秒数的代码示例。缺少的秒数实际上不是这里的问题。OP的问题是要花费毫秒数(8559000)并将其转换为小时和分钟,因此告诉他们如何在秒数内得到结果并不能回答问题(尽管答案中隐藏了60*0.3775的关键点)。