Почему это не работает?
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!"); }
Вывод:
упс!
Месяцы начинаются с 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 года. Просто выведите значения и вы увидите.
start
end
Ваши даты фактически разрешаются до
Tue May 01 2012 19:00:00 GMT-0700 (PDT) Tue May 01 2012 01:00:00 GMT-0700 (PDT)
С Дата MDN :
месяц Целочисленное значение, представляющее месяц, начиная с 0 для января до 11 для декабря.
Полагаю, вы хотите увидеть, какая дата предшествует другой, верно?
Когда вы сравниваете два, вы не сравниваете фактические даты, когда вы сравниваете объекты. Попробуйте if(end.valueOf() < start.valueOf()) { //do stuff }
if(end.valueOf() < start.valueOf()) { //do stuff }