Когда я пытаюсь сравнить время окончания, а не большее время начала, он возвращается каждый раз, когда отображается NaN.
jQuery.validator.addMethod("checkTime", function(value, element, options) {
var start_times = options.val(); #15:00
var end_times = value; #14:00
var dtStart = new Date("1/1/2001 " + start_times);
var dtEnd = new Date("1/1/2001 " + end_times);
var difference_in_milliseconds = dtEnd - dtStart;
console.info(difference_in_milliseconds);
return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Возможно, мне чего-то не хватает (никогда не использовал clockpicker, я подозреваю, что вы добавляете число), но если вы это сделаете:
(new Date("1/1/2001 "+67)) - (new Date("1/1/2001 "+767))
Вы получаете NaN. Не лучше ли использовать:
var dtStart = Date.now() + start_times;
var dtEnd = Date.now() + end_times;
вместо?
Date.now() не будет базироваться с 01.01.2001.
Это не имеет значения. Он хочет разницы
Затем вы также можете пропустить Date.now () (который может меняться на 1 миллисекунду от одной строки к другой) и просто вычтите start_times из end_times. Я подозреваю, что весь смысл возиться с объектами Date здесь заключается в том, чтобы каким-то образом воспользоваться синтаксическим анализом даты / времени.
С такой логикой он мог бы пропустить новую дату ("1/1/2001" ... тоже. В конце концов, он имеет дело с числами, поэтому он и получил это NaN в первую очередь. Интересно, почему он не просто спросите, как анализирует объект Date, а не в этом примере.Но его часы все равно возвращают числа.
Вы можете сначала извлечь часы, минуты и секунды из start_times и end_times. Затем внесите изменения в функцию, как показано ниже:
jQuery.validator.addMethod("checkTime", function(value, element, options) {
var start_times = options.val();
var end_times = value;
var dtStart = new Date("1/1/2001");
dtStart.setHours('//Hours extracted from given start_times');
dtStart.setMinutes('//Minutes extracted from given start_times');
dtStart.setSeconds('//Seconds extracted from given start_times');
var dtEnd = new Date("1/1/2001");
dtEnd.setHours('//Hours extracted from given end_times ');
dtEnd.setMinutes('//Minutes extracted from given end_times ');
dtEnd.setSeconds('//Seconds extracted from given end_times ');
var difference_in_milliseconds = dtEnd.getTime() - dtStart.getTime();
console.info(difference_in_milliseconds);
return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");
Остальное оставил как есть.
Вы можете попробовать это решение, возможно, оно сработает для вас
Похоже,
"1/1/2001 " + start_timesне возвращает допустимую строку, которую может проанализироватьDate. Вам нужно исправить свойoptions