在jquery

时间:2015-12-28 06:30:12

标签: php jquery

我需要查找2个选定日期之间的天数。我尝试了以下代码,但它返回了某些日期的错误结果。

function getDateObject(str) {
  var arr = str.split("-");
  return new Date(arr[0], arr[1], arr[2]);
}

$('#from_date,#to_date').bind("change paste keyup", function() {
    var date1 = getDateObject($('#from_date').val());
    var date2 = getDateObject($('#to_date').val());
    var days = (date2 - date1) / 86400000;
    alert(days); //it returns -1 for from:2016-01-31 - to:2016-02-01.
    //other dates like from:2016-01-13 - to:2016-01-14 returns 1 correctly
}

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

您需要正确地解析日期:

new Date("2016", "01", "31");

将给出

Wed Mar 02 2016 00:00:00 GMT+0530 (IST)

这样可以正常使用

// str should be in yy-mm-dd
function getDateObject(str) {
  return new Date(str);
}

答案 1 :(得分:0)

最后我找到了解决方案。

function getDateObject(str) {
  var arr = str.split("-");
  return new Date(arr[0], arr[1]-1, arr[2]);//just added -1 in arr[1] that is month.
}

$('#from_date,#to_date').bind("change paste keyup", function() {
    var date1 = getDateObject($('#from_date').val());
    var date2 = getDateObject($('#to_date').val());
    var days = (date2 - date1) / 86400000;
    alert(days); 
}

这给了我需要的输出。

谢谢大家试图帮助我。