Javascript 计算两个日期时间之间的时间

Javascript 计算两个日期时间之间的时间,javascript,html,datetime,Javascript,Html,Datetime,我试图计算两个日期之间的时间,以及获取旅行时间的时间 天和小时(四舍五入) 我使用4个来自引导程序(包括日期选择器)的输入,格式为dd:mm:yy和hh:mm 标记: <input type="date" name="travel_begin_date" id="travel_begin_date" placeholder="Text input" class="span12"> <input type="time" name="travel_begin_time" id="t

我试图计算两个日期之间的时间,以及获取旅行时间的时间 天和小时(四舍五入)

我使用4个来自引导程序(包括日期选择器)的输入,格式为
dd:mm:yy
hh:mm

标记:

<input type="date" name="travel_begin_date" id="travel_begin_date" placeholder="Text input" class="span12">
<input type="time" name="travel_begin_time" id="travel_begin_time" placeholder="Text input" class="span12">
<input type="date" id="travel_end_date" name="travel_end_date" placeholder="Text input" class="span12">
<input type="time" for="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">

<div id="days_difference"></div>
<div id="hours_difference"></div> 
function calculateDifference() {
console.log('calculate difference start...');
var startDate = $("#travel_begin_date").val();
var startTime = $("#travel_begin_time").val();
var endDate = $("#travel_end_date").val();
var endTime = $("#travel_end_time").val();

var stDate = new Date(startDate);
var enDate = new Date(endDate);

var diff=enDate.getTime() - stDate.getTime();
var differenceDays = (diff) / (1000 * 60 * 60 * 24);
var differenceHours= ((diff) % (1000 * 60 * 60 * 24))/ (1000 * 60 * 60); 

document.getElementById('days_difference').innerHTML += differenceDays  + " days and";
document.getElementById('hours_difference').innerHTML += differenceHours  + " hours";

 }
现在的问题是:我如何计算小时数之差

例如:

差异日期:2013年3月20日 时间:2013年3月22日10:00 时间:11:45=结果2天2小时(四舍五入)


是否有简单的代码或插件?

根据评论更新答案并添加

<input type="time" id="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">

根据评论更新答案并添加

<input type="time" id="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">

也许你需要这样的东西

var DateDiff = {

    inDays: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000));
    },

    inWeeks: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7));
    },

    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },

    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

代码取自。你也可以读一读

也许你需要这样的东西

var DateDiff = {

    inDays: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000));
    },

    inWeeks: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7));
    },

    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },

    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

代码取自。您也可以阅读

谢谢。我已将我的功能更改为上面编辑的代码。如果我这样计算:旅行开始(输入值)2013-05-20 00:00(不同输入!!),旅行结束(输入值)2013-05-23 07:00(不同输入!!)。结果是3天(没错!)和0小时(没错,应该是7小时)->3天7小时。问题是,我必须用4个输入来计算谢谢。我已将我的功能更改为上面编辑的代码。如果我这样计算:旅行开始(输入值)2013-05-20 00:00(不同输入!!),旅行结束(输入值)2013-05-23 07:00(不同输入!!)。结果是3天(没错!)和0小时(没错,应该是7小时)->3天7小时。问题是,我必须用4个输入进行计算!此示例无法正常工作,例如2017年3月20日和2017年3月27日之间的天数差为6天,而不是7天。问题是(t2-t1)/(24*3600*1000)=6.958333333,parseInt((t2-t1)/(24*3600*1000))返回6!此示例无法正常工作,例如2017年3月20日和2017年3月27日之间的天数差为6天,而不是7天。问题是(t2-t1)/(24*3600*1000)=6.958333333,而parseInt((t2-t1)/(24*3600*1000))返回6