Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
日期差异在javascript中不正确_Javascript_Date - Fatal编程技术网

日期差异在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的关键点)。