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

计算javascript中两个日期之间的天数,javascript,jquery,Javascript,Jquery,请帮我计算一下今天和其他日期之间的天数。。这是我的 它给了我NaN 这是我想到的。我的 如果您有udate格式,如28-07-2011,您可以使用此 var checkindatestr = "28-07-2011"; var dateParts = checkindatestr.split("-"); var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); var now = new Date();

请帮我计算一下今天和其他日期之间的天数。。这是我的

它给了我
NaN

这是我想到的。我的


如果您有
udate
格式,如
28-07-2011
,您可以使用此

var checkindatestr = "28-07-2011";
var dateParts = checkindatestr.split("-");

var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var now = new Date();
var difference = now - checkindate;
var days = difference / (1000*60*60*24);

alert(days);

使用以下方法:

var udate="2011-08-19 11:49:01.0 GMT+0530";
IST部分无效

请使用

var firstDate = new Date(); // Todays date
var secondDate = new Date(2011,08,19, 11,49,01);

var diffDays = (firstDate.getDate() - secondDate.getDate());
它将NAN显示为您的构造函数是错误的。通过在原始代码中提醒secondDate来检查您自己

编辑:对于一般情况,如果两个日期在同一个月,上述代码将起作用

var oneDay  = 24*60*60*1000;
var diffDays = Math.abs((firstDate.getTime() - secondDate.getTime()) / oneDay);

此外,这将以日期的分数给出结果,因此如果要计算整个日期,可以使用Math.ceil或Math.floor

正确计算差值,但问题是
secondDate
是无效日期<代码>日期无法使用该日期格式,它需要
“August 08,2011 11:49:01”
作为输入-如果您的日期具有不同的格式,则必须将其转换。请注意,
Date
只有基本的时区识别,您只能确保正确识别“UTC”或“GMT”-您不应该使用其他时区。

问题在于您的
udate
变量值。日期格式不正确。尝试用以下格式初始化日期:

var secondDate = new Date(year,month,date);

您的输入日期不正确,这就是它失败的原因。无论如何,这里有一些代码应该可以帮助你

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 udate="2011-08-05 11:49:01";
var configDate=new Date(udate);

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(); // Todays date
var secondDate = new Date(udate);

alert(secondDate);

var diffDays = DateDiff .inDays(firstDate,secondDate);

alert(diffDays );

Chrome似乎接受ISO日期格式,但大多数其他浏览器不接受。因此,此解决方案不是跨浏览器的。请尝试使用新日期(“2011年8月19日”)@Pradeep:在IE中不起作用,但在所有其他浏览器中都起作用。你可以看看。谢谢你的回答。在IE中也不起作用,但在所有其他浏览器中都起作用。你可以看一下。谢谢你能回答这个问题的是日期:ie不支持其他浏览器的方式。。运行以下命令:
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 udate="2011-08-05 11:49:01";
var configDate=new Date(udate);

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(); // Todays date
var secondDate = new Date(udate);

alert(secondDate);

var diffDays = DateDiff .inDays(firstDate,secondDate);

alert(diffDays );