Javascript日期比较错误?

时间:2012-03-23 17:08:01

标签: javascript validation

为什么这不起作用?

function test() { 
    var start = new Date(2012, 3, 31, 19, 0, 0); // 3/31/2012 7:00 PM
    var end = new Date(2012, 4, 1, 1, 0, 0);     // 4/01/2012 1:00 AM

    if (end < start)
        console.log("oops!");
    else
        console.log("works!");
}

输出:

  

糟糕!

3 个答案:

答案 0 :(得分:9)

月份在js中基于0

var start = new Date(2012, 2, 31, 19, 0, 0); // 3/31/2012 7:00 PM
var end = new Date(2012, 3, 1, 1, 0, 0);     // 4/01/2012 1:00 AM

在您的情况下,startend都是2012年5月1日。只需输出值,您就会看到。

答案 1 :(得分:3)

您的约会实际上已解决

Tue May 01 2012 19:00:00 GMT-0700 (PDT)
Tue May 01 2012 01:00:00 GMT-0700 (PDT)

来自DateMDN

  

<强>月   
表示月份的整数值,从1月的0开始到12月的11。

答案 2 :(得分:0)

我想你想看看哪一个日期在另一个之前,对吗?

当你比较两者时,你没有比较你比较对象的实际日期。试试if(end.valueOf() < start.valueOf()) { //do stuff }