Ошибка сравнения даты в Javascript? - PullRequest
2 голосов
/ 23 марта 2012

Почему это не работает?

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 ]

9 голосов
/ 23 марта 2012

Месяцы начинаются с 0 в js

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

В вашем случае start и end - это 1 мая 2012 года. Просто выведите значения и вы увидите.

3 голосов
/ 23 марта 2012

Ваши даты фактически разрешаются до

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

С Дата MDN :

месяц
Целочисленное значение, представляющее месяц, начиная с 0 для января до 11 для декабря.

0 голосов
/ 23 марта 2012

Полагаю, вы хотите увидеть, какая дата предшествует другой, верно?

Когда вы сравниваете два, вы не сравниваете фактические даты, когда вы сравниваете объекты. Попробуйте if(end.valueOf() < start.valueOf()) { //do stuff }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...