在JavaScript中,如何计算两个24小时格式的时间之间的差?
示例:获取从08:00:00
到23:00:00
经过的小时数。
下面我从两个下拉菜单中得到两个时间值,并试图计算这两个时间之间的小时数差。
工作示例:http://jsfiddle.net/VnwF7/1/
脚本:
$(document).ready(function() {
function calculateTime() {
//get values
var valuestart = $("select[name='timestart']").val();
var valuestop = $("select[name='timestop']").val();
//create date format
var timeStart = new Date("01/01/2007 " + valuestart);
var timeEnd = new Date("01/01/2007 " + valuestop);
var difference = timeEnd - timeStart;
var diff_result = new Date(difference);
var hourDiff = diff_result.getHours();
$("p").html("<b>Total Hours:</b> " + hourDiff )
}
$("select").change(calculateTime);
calculateTime();
});
超文本标记语言:
<select name="timestart">
<option value="00:00:00">12:00 am</option>
<option value="01:00:00">1:00 am</option>
<option value="02:00:00">2:00 am</option>
<option value="03:00:00">3:00 am</option>
<option value="04:00:00">4:00 am</option>
<option value="05:00:00">5:00 am</option>
<option value="06:00:00">6:00 am</option>
<option value="07:00:00">7:00 am</option>
<option value="08:00:00">8:00 am</option>
<option value="09:00:00">9:00 am</option>
<option value="10:00:00">10:00 am</option>
<option value="11:00:00">11:00 am</option>
<option value="12:00:00">12:00 pm</option>
<option value="13:00:00">1:00 pm</option>
<option value="14:00:00">2:00 pm</option>
<option value="15:00:00">3:00 pm</option>
<option value="16:00:00">4:00 pm</option>
<option value="17:00:00">5:00 pm</option>
<option value="18:00:00">6:00 pm</option>
<option value="19:00:00">7:00 pm</option>
<option value="20:00:00">8:00 pm</option>
<option value="21:00:00">9:00 pm</option>
<option value="22:00:00">10:00 pm</option>
<option value="23:00:00">11:00 pm</option>
</select>
<select name="timestop">
<option value="00:00:00">12:00 am</option>
<option value="01:00:00">1:00 am</option>
<option value="02:00:00">2:00 am</option>
<option value="03:00:00">3:00 am</option>
<option value="04:00:00">4:00 am</option>
<option value="05:00:00">5:00 am</option>
<option value="06:00:00">6:00 am</option>
<option value="07:00:00">7:00 am</option>
<option value="08:00:00">8:00 am</option>
<option value="09:00:00">9:00 am</option>
<option value="10:00:00">10:00 am</option>
<option value="11:00:00">11:00 am</option>
<option value="12:00:00">12:00 pm</option>
<option value="13:00:00">1:00 pm</option>
<option value="14:00:00">2:00 pm</option>
<option value="15:00:00">3:00 pm</option>
<option value="16:00:00">4:00 pm</option>
<option value="17:00:00">5:00 pm</option>
<option value="18:00:00">6:00 pm</option>
<option value="19:00:00">7:00 pm</option>
<option value="20:00:00">8:00 pm</option>
<option value="21:00:00">9:00 pm</option>
<option value="22:00:00">10:00 pm</option>
<option value="23:00:00">11:00 pm</option>
</select>
<p></p>
6条答案
按热度按时间ccgok5k51#
你可以用这种方法减去小时数
这是一把工作中的小提琴http://jsfiddle.net/VnwF7/4/
UPDATE -计算是否包含第二天。只需添加以下if块
http://jsfiddle.net/gfvhqat9/
eufgjt7s2#
试试这个方法
niwlg2el3#
我修改了您的代码,以便只使用差异,而不必创建另一个date对象:
yyyllmsg4#
它不是Jquery,而是JavaScript中与时间和日期相关的所有内容...
这可能有助于:日期http://code.google.com/p/datejs/
下面是一些日期和时间计算从文档
编辑:由于这是一个相当老的答案,我最近也使用moment.js进行与日期相关的操作,这也非常有用。
pbpqsu0x5#
你不需要把它们转换成这个特定情况下的日期。
Working fiddle
mzsu5hc06#