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

请帮助我获取今天的日期和其他日期之间的天数。这是我的例子

它给了我NaN

这就是我想出的。 我的演示

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

使用

 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

用这个:

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

IST部分无效

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

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

如果你有像28-07-2011这样的udate格式,你可以使用它

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

如何在jquery中比较两个日期

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

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

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