2015-06-24 3 views
0

Рассмотрим этот код:сравнение даты только сравнивает лет

var from = new Date(document.getElementById("from").value); 
var to = new Date(document.getElementById("to").value); 
var yeardate = new Date(from.setMonth(from.getMonth()+12)); 

if (from.getTime() > to.getTime()) { 
    alert(from.getTime() > to.getTime()); 
} 

Поля являются html5 поля даты.

Например, я использую это:

from: 2015-06-30 

to: 2018-07-31 

он выдает ложные, но когда я делаю это:

from: 2015-06-30 

to: 2015-07-31 

Он выдает истинный, пока он все еще должен быть ложным, потому что 06-30 не больше чем 07-31.

Похоже, он проверяет только год, как мне исправить это?

Edit:

Как было предложено @Laxmikant Дангом, я попробовал следующее.

alert((new Date('2015-06-30').getTime() > new Date('2015-07-31').getTime())); 

теперь возвращает ложь, но когда я храню объект переменной, например:

var from = new Date('2015-06-30'); 
var to = new Date('2015-07-31'); 
alert(from.getTime() > to.getTime()); 

Это снова возвращает true.

+0

Что вы хотите от этого сделать? –

+0

Последний возвращает false для меня. http://jsfiddle.net/ayg6bm4u/ – putvande

ответ

0

Проверьте, что такое значение элементов даты, Возможно, возникла проблема. вот ваши значения, и он возвращает false для обоих случаев.

Значение, возвращаемое методом getTime(), представляет собой число миллисекунд с 1 января 1970 года 00:00:00 по UTC. Here - справка.

так что это не сравнение только лет.

console.log("case 1",new Date('2015-06-30').getTime() > new Date('2018-07-31').getTime()); 
 
console.log("case 2",new Date('2015-06-30').getTime() > new Date('2015-07-31').getTime());

Проблема в коде с этой линией.

var yeardate = new Date(from.setMonth(from.getMonth()+12)); 

Вы добавляете 12 месяцев от. Прокомментируйте эту строку, вы получите ожидаемый результат.

+0

Это действительно странно, я протестировал ваш код, он вернул false в обоих случаях, когда я сделал то, что вы сделали. Но когда я помещаю их в переменную, он снова становится верным. – morbidCode

+0

@morbidCode, попробуйте указать значения полей даты, проверьте, что возвращается, –

+0

Объект даты, содержащий поле «from», возвращенное 1467244800000, и объект даты, содержащий поле «to», возвращенное 1438300800000 – morbidCode

Смежные вопросы