我的表单中有两个字段,用户选择输入时间(start_time,end_time)我想在更改这些字段时重新计算另一个字段的值。
我想做的是获得2次之间的小时数。因此,例如,如果我的start_time为5:30,结束时间为7:50,我想将结果2:33放入另一个字段。
我输入的表格时间格式为HH:MM:SS
到目前为止,我已经尝试过......
$('#start_time,#end_time').on('change',function()
{
var start_time = $('#start_time').val();
var end_time = $('#end_time').val();
var diff = new Date(end_time) - new Date( start_time);
$('#setup_hours').val(diff);
答案 0 :(得分:11)
试
var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 1000 / 60 / 60;
答案 1 :(得分:5)
这取决于您希望输出的格式。使用Date对象进行数学运算时,它会将它们转换为自Epoch时间(1970年1月1日,00:00:00 UTC)以来的毫秒数。通过减去两个(并且如果你不知道哪个更大则取绝对值),你得到两者之间的原始数毫秒。
从那里,您可以将其转换为您想要的任何格式。要获得秒数,只需将该数字除以1000
即可。获得小时,分钟和秒:
var diff = Math.abs(new Date(end_time) - new Date(start_time));
var seconds = Math.floor(diff/1000); //ignore any left over units smaller than a second
var minutes = Math.floor(seconds/60);
seconds = seconds % 60;
var hours = Math.floor(minutes/60);
minutes = minutes % 60;
alert("Diff = " + hours + ":" + minutes + ":" + seconds);
你当然可以通过一些条件使这更聪明,但这只是为了告诉你使用数学你可以用你想要的任何形式格式化它。请记住,Date对象总是有一个日期,而不仅仅是一个时间,所以你可以将它存储在Date对象中,但是如果它超过24小时,你最终会得到的信息并不能真正代表它们之间的“距离”。 2。
答案 2 :(得分:5)
var start = '5:30';
var end = '7:50';
s = start.split(':');
e = end.split(':');
min = e[1]-s[1];
hour_carry = 0;
if(min < 0){
min += 60;
hour_carry += 1;
}
hour = e[0]-s[0]-hour_carry;
min = ((min/60)*100).toString()
diff = hour + ":" + min.substring(0,2);
alert(diff);
答案 3 :(得分:3)
试试这个:
var diff = new Date("Aug 08 2012 9:30") - new Date("Aug 08 2012 5:30");
diff_time = diff/(60*60*1000);