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

时间:2011-08-19 06:43:58

标签: javascript jquery

请帮我查看今天和其他日期之间的天数。这是example

它给了我NaN

这是我想出的。我的demo

var cellvalue="2011-08-18 11:49:01.0 IST";
var firstDate = new Date();
var secondDate = cellvalue.substring(0, cellvalue.length-4);

alert(diffOf2Dates(firstDate,secondDate));

function diffOf2Dates(todaysDate,configDate)
{
/*var udate="2011-08-18 11:49:01.0";
var configDate=new Date(udate);*/

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

var diffDays = Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay));
console.info(firstDate+", "+secondDate);
//console.info(Math.ceil(diffDays));

return Math.ceil(diffDays);
}

6 个答案:

答案 0 :(得分:6)

使用

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

答案 1 :(得分:3)

使用此:

var udate="2011-08-19 11:49:01.0 GMT+0530";

IST部分无效

答案 2 :(得分:3)

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

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 );

答案 3 :(得分:2)

如果您使用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);

how to compare two dates in jquery

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

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