2011-05-27 97 views
1

可能重复:
Get difference between 2 dates in javascript?如何检查日期是否在30天内?

我存储日期变量是这样的:

var startYear = 2011; 
var startMonth = 2; 
var startDay = 14; 

现在我要检查,如果当前日(今天)是下降的30开始日期的天数与否。 我可以这样做吗?

var todayDate = new Date(); 
var startDate = new Date(startYear, startMonth, startDay+1); 
var difference = todayDate - startDate; 

????

我不确定这是否在语法上或逻辑上正确。

+2

把“javascript日期比较”放到Google中。你尝试过吗? – 2011-05-27 15:50:59

回答

10

在JavaScript中,获得两个日期之间的时间跨度最好的办法就是让他们的“时间”值(因为毫秒为单位的数量),并转换到这一点所需的单位。这里是一个函数来获取两个日期之间的天数:

var numDaysBetween = function(d1, d2) { 
    var diff = Math.abs(d1.getTime() - d2.getTime()); 
    return diff/(1000 * 60 * 60 * 24); 
}; 

var d1 = new Date(2011, 0, 1); // Jan 1, 2011 
var d2 = new Date(2011, 0, 2); // Jan 2, 2011 
numDaysBetween(d1, d2); // => 1 
var d3 = new Date(2010, 0, 1); // Jan 1, 2010 
numDaysBetween(d1, d3); // => 365 
+0

我试过这个:http://pastie.org/1981365但它总是给我正整数...我想知道如果当前日期是之前或之后... – ssdesign 2011-05-27 16:05:12

+0

确定其工作。 – ssdesign 2011-05-27 16:07:29

+0

@ssdesign:如果开始日期在今天之前,你的代码应该返回一个负整数;我的代码可以通过去除减法周围的'Math.abs'来修改。 – maerics 2011-05-27 16:12:46

1
(todayDate.getTime() - startDate.getTime())/(1000*60*60*24.0) 
相关问题