Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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_Datetime_Time_Date Difference - Fatal编程技术网

使用Javascript获取两个时间字符串之间的时差

使用Javascript获取两个时间字符串之间的时差,javascript,datetime,time,date-difference,Javascript,Datetime,Time,Date Difference,我正在尝试创建一个包含3个输入的表单(2个解锁,1个锁定),其中您将输入2次时间,例如7:30AM和4:00PM,它将在第3个框中生成时间差,单位为秒 问题是,我似乎无法找到一种工作方法来实际计算时差 <script language="javascript" type="text/javascript"> $(document).ready(function(){ function UpdateHours(){ var start = $("#time1

我正在尝试创建一个包含3个输入的表单(2个解锁,1个锁定),其中您将输入2次
时间,例如
7:30AM
4:00PM
,它将在第3个框中生成时间差,单位为

问题是,我似乎无法找到一种工作方法来实际计算时差

<script language="javascript" type="text/javascript">
$(document).ready(function(){
    function UpdateHours(){ 

        var start = $("#time1").val();
        var end = $("#time2").val();

        var dtStart = new Date("7/20/2015 " + start);
        var dtEnd = new Date("7/20/2015 " + end);

        var diff = dtEnd - dtStart;

        $("#totalTime").val(diff);
    }
    $(document).on("change, keyup", "#time1", UpdateHours);
    $(document).on("change, keyup", "#time2", UpdateHours);
});
</script>  

<input id="time1" type="text" />
<input id="time2" type="text" />
<input id="totalTime" readonly="readonly" />

$(文档).ready(函数(){
函数UpdateHours(){
var start=$(“#time1”).val();
var end=$(“#time2”).val();
var dtStart=新日期(“2015年7月20日”+开始日期);
var dtEnd=新日期(“7/20/2015”+结束);
var diff=dtEnd-dtStart;
$(“#总时间”).val(差异);
}
$(文档)。在(“更改,键控”和“时间1”,更新小时)上;
$(文档)。在(“更改,键控”和“时间2”,更新小时)上;
});

这就是我迄今为止所做的尝试。我能得到一些帮助吗?

您遇到的问题是从另一个对象中减去一个对象。我不知道JavaScript在这种情况下决定做什么,但为了安全起见,即使它确实有效,也不应该依赖于这种行为。你应该做的是:

var diff = dtEnd.getTime() - dtStart.getTime();
diff
将是两个日期对象之间的毫秒数。

$(文档).ready(函数(){
变量$time1=$(“#time1”);
变量$time2=$(“#time2”);
变量$diff=$(“#总时间”);
函数updateHours(){
var dtStart=新日期(“2015年7月20日”+$time1.val());
var dtEnd=新日期(“2015年7月20日”+$time2.val());
var diff=dtEnd-dtStart;
$diff.val(diff/1000);
}
$time1.add($time2).on(“change,keyup”,function()){
如果($time1.val()&&$time2.val()){
更新小时数()
}
});
});


hours1
变量是什么?为什么不显示
diff
的值呢?这是我尝试过的不同的东西。当我显示diff时,它会显示我看不懂的
30600000
30600000
这些是毫秒,除以1000,你会得到秒,如果你所说的
我看不懂的话。
Math.floor(30600000/(100*60*60)) = 85 hours@TimothyLee尝试更新的优化代码谢谢你的建议和指点。我现在已经完全按照它的意思工作了:)。我遇到的问题是我不知道如何从毫秒转换,所以我一直得到错误的数字,因为我转换不正确。