如何计算javascript中两个日期之间的天数

时间:2013-12-12 07:11:17

标签: javascript jquery date datepicker

这个javascript计算天数的数字

我选择了两个日期

2013年1月1日 第二次约会2013-12-31

它显示了365天的回答

我是计算机手册,这是正确的答案是364天

我该如何解决这个问题请帮助我 感谢

live demo

形式

<input class='fromdate' />
<input class='todate' />
<input class='calculated' />
<input class='minim' /><br/><p><font size="3"><b>For more FAQs Visit<a  target="_blank"href="http://jqfaq.com/"</a> JQFaq.com</b></font></p>
<iframe id="iframe1" src="http://jqfaq.com/AdPage.html" style="width:100%; height:115px; border:none;"
/>

的javascript

$('.fromdate').datepicker({
    dateFormat: 'yy-mm-dd',
    changeMonth: true,
    changeYear: true,
});
$('.todate').datepicker({
    dateFormat: 'yy-mm-dd',
    changeMonth: true,
    changeYear: true,
});
$('.fromdate').datepicker().bind("change", function () {
    var minValue = $(this).val();
    minValue = $.datepicker.parseDate("yy-mm-dd", minValue);
    $('.todate').datepicker("option", "minDate", minValue);
    calculate();
});
$('.todate').datepicker().bind("change", function () {
    var maxValue = $(this).val();
    maxValue = $.datepicker.parseDate("yy-mm-dd", maxValue);
    $('.fromdate').datepicker("option", "maxDate", maxValue);
    calculate();
});

function calculate() {
    var d1 = $('.fromdate').datepicker('getDate');
    var d2 = $('.todate').datepicker('getDate');
    var diff = 1;
    if (d1 && d2) {
        diff = diff + Math.floor((d2.getTime() - d1.getTime()) / 86400000); // ms per day
    }
    $('.calculated').val(diff);
    $('.minim').val(d1)
}

3 个答案:

答案 0 :(得分:1)

就像这样你可以做到 -

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2008,01,12);
var secondDate = new Date(2008,01,22);

var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));

Refer this

答案 1 :(得分:0)

尝试这个来计算函数calculate()中的“diff”:

   if (d1 && d2) {
        var timeDiff = Math.abs(d2.getTime() - d1.getTime());
        diff = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    }

答案 2 :(得分:0)

在你的代码中,var diff = 1导致了问题。

将其更改为var diff = 1,然后看到您将获得364天。