2013-08-16 1 views
1

Я пытался работать со сравнением дат и времени с использованием датпикера jQuery UI и дополнения к timepicker (добавление, которое я только что открыл, и я очень доволен).Почему эти две даты от датпикера jQuery UI не сравниваются правильно в jQuery?

Итак, вот что у меня есть:

Во-первых, ожидаемые значения от $("#dateOfAb").val() и $("#dateOfAb2").val() как использовать DateTimePicker со следующим форматированием:

Время:

$ ("# dateOfAb, # dateOfAb2"). datetimepicker ({timeFormat: "hh: mm tt", stepMinute: 15});

И, хотя явно не установлено (Это, как представляется, дата по умолчанию форматирование по для указанного плагина):

DateFormat: "мм/дд/гг"

(пример: 08/16/2013 12:00)

Итак, мне нужно сравнить эти даты, и, хотя у меня был успех, сравнивающий даты в прошлом, у меня возникли проблемы с сравнением времени для равных дат (что является конечной целью), но то, что держит меня прямо сейчас, заключается в том, что я не могу получить эти два значения parseDate (на подстроках с полной даты/времени), чтобы показать, что они равны, когда даты одинаковы ,

Хорошо, что последний пункт может быть немного запутанным так, вот код:

$("#dateOfAb2").change(function() { 
    console.log("FIRST SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9))) 
    console.log("FIRST SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9))) 

    if ($.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)) == $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9))) { 
     alert("The dates are tied."); 
     console.log("SECOND SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9))) 
     console.log("SECOND SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9))) 
    } 
}); 

Проблема заключается в том, что даже когда я знаю, что значения в точности то же самое (доказано с console.log() [изображение ниже]) они, похоже, не сравниваются, как я ожидал бы в своей ветке if.

Изображение консоли после запуска:

enter image description here

Вы можете видеть, что я substringed из только часть даты значения и значения одинаковы, но я не уверен, что я m делать неправильно и почему команды «SECOND SET:» из console.log() не будут выполняться.

+0

Какой плагин для выбора даты вы используете? – losnir

+0

@losnir Я просто хотел поблагодарить за помощь, сэр. – VoidKing

+0

Я ничего не сделал, но спасибо! :-) – losnir

ответ

3

Процедура parse возвращает объекты Date, поэтому ваше сравнение выполняется между двумя отдельными экземплярами объекта. Они будут никогда be == друг к другу.

Try:

if ($.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)).getTime() == $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9)).getTime()) { 

Сравнивая результаты вызова .getTime(), вы сравниваете два числа для равенства, которые будут делать то, что вы хотите.

+0

Я как раз собирался опубликовать это. Ну что ж. +1 :) – losnir

+0

@VoidKing Кстати, вы можете использовать '.toString()' вместо этого, если вы хотите сравнить две строки (как показано на скриншоте). – losnir

+0

@losnir да, строки тоже были бы хороши, хотя (неважно), вероятно, немного быстрее сравнить числа. – Pointy

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