2012-06-30 4 views
0

я пытаюсь сравнить две временные метки, как это:JavaScript - Сравнение двух временных меток

var nowDate = new Date(); 
var givenDate = new Date(parseInt(year), parseInt(month), parseInt(day), parseInt(hour), parseInt(minute), 0); 
var nd_timestamp = nowDate.getTime(); 
var gd_timestamp = givenDate.getTime(); 

if (nd_timestamp > gd_timestamp) { 
    alert("yes"); 
} 

Но это не работает должным образом. Если я посмотрю на nd_timestamp и gd_timestamp, все будет выглядеть нормально, но if-clause не работает. Если я удалю parseInt (год) ... и введите Date (2012, 04, 20, 0, 0, 0), if-clause работает.

Переменные год, месяц и т. Д. Выходят через функцию, но если я отлаживаю ее с предупреждением (год) и т. Д., Все в порядке. Данная дата по форме меньше фактической даты.

Кто-нибудь знает, почему он не работает с переменными?

Спасибо!

+1

Вы знаете, что объекты JavaScript Date ожидают значение месяца от 0 до 11, а не от 1 до 12, правильно? – Pointy

+1

Также ваши вызовы parseint должны выглядеть как 'parseInt (месяц, 10)' - если вы этого не сделаете, вы получите странные результаты от «08» и «09». – Pointy

+0

Привет, спасибо. Я использую теперь parseInt (var, 10) и за месяц, который я делаю: parseInt (месяц-1,10). Это кажется правильным. – Torben

ответ

2

Вы должны проверить значения, передаваемые в Date конструктор действия, который включает в себя явно указании 10 в качестве второго параметра для всех ваших parseInt звонков, чтобы избежать неприятных сюрпризов.

Что касается второго параметра, документация говорит

Хотя этот параметр не является обязательным, всегда указывать его устранить читателя путаницы и гарантировать предсказуемое поведение. Различные версии производят разные результаты, если не равен .

2

Вы должны взять 1 из месяца, потому что по какой-то причине оно основано на нуле, в отличие от других.

+0

Эти индексы с нулевым индексом настолько злы, вот почему: http://stackoverflow.com/questions/2552483/why-does-the-month-argument-range-from-0-to-11-in-javascripts -date-конструктор –