使用jQuery计算22:00(今天)和06:00(明天)之间的小时数

时间:2018-10-08 11:49:53

标签: javascript jquery time

我想用JavaScript或jquery计算22:00(今天)和06:00(明天)之间的小时数。如果开始时间= 23:10,停止时间= 05:20  工作时间为06:10,因为从今天的23:10(明天)到05:20(明天)有06:10的时间。

我有两个输入字段:

<input type="text" name="startTime" autocomplete="off" style="display:inline;width: 90px;" id="startTime" class="timepicker"/>

<input type="text" name="stopTime" autocomplete="off" style="display: inline;width: 90px;" id="stopTime" class="timepicker1"/>

我的JavaScript代码是:

var start_time = $('#startTime').val();
var end_time = $('#stopTime').val();


var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;


var decimalTimeString = diff;
var n = new Date(0,0);
n.setSeconds(+decimalTimeString * 60 * 60);
var test = n.toTimeString().slice(0, 8);


$('#workingValue').val(test);

此javascript代码有效,但仅计算00:00到23:45之间的小时数,例如如果开始时间= 00:00且停止时间= 23:45 workingValue = 23:45,则正确。但是,如果开始时间为22:00(例如),停止时间为01:00,则我的工作值不正确。它返回我00:00,但必须是03:00。请帮助我解决问题! 附言对不起,我的英语,但这不是很好!

3 个答案:

答案 0 :(得分:1)

您可以使用moment
在代码段中,您可以显示一个示例

let now  = "10/10/2018 15:00:00";
let then = "07/10/2018 14:20:30";

let ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
let d = moment.duration(ms);
let s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

document.getElementById("time").innerText = s
<script src="https://momentjs.com/downloads/moment.js"></script>

<div id="time"></div>

答案 1 :(得分:1)

使用帖子中的信息,即您只有两个没有日期信息的时间字符串,您可以在Vanilla JavaScript中执行以下操作:

const ge=id=>document.getElementById(id);
const res=ge('result'), st=ge('start'), en=ge('end');
document.forms[0].addEventListener('keyup',function(el){
  res.innerHTML=new Date(new Date('1970-1-2 '+en.value)
                        -new Date('1970-1-1 '+st.value)).toGMTString().substr(17,5);
})
<form>
<input id="start" value="22:30"> start<br>
<input id="end" value="2:00"> end<br>
</form>
<div id="result"></div>

答案 2 :(得分:0)

当您使用 00:00 23:45 计算此计算时,它会给出正结果,所以可以,但是在相反的情况下,我们说< em> 23:45 00:00 它将给出减去结果

var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;