JQuery сравнивает время начала и время окончания отображения NaN

Когда я пытаюсь сравнить время окончания, а не большее время начала, он возвращается каждый раз, когда отображается 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.");

Похоже, "1/1/2001 " + start_times не возвращает допустимую строку, которую может проанализировать Date. Вам нужно исправить свой options

CertainPerformance 25.04.2018 10:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
186
2

Ответы 2

Возможно, мне чего-то не хватает (никогда не использовал 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.
kshetline 25.04.2018 10:10

Это не имеет значения. Он хочет разницы

ibrahim tanyalcin 25.04.2018 10:11

Затем вы также можете пропустить Date.now () (который может меняться на 1 миллисекунду от одной строки к другой) и просто вычтите start_times из end_times. Я подозреваю, что весь смысл возиться с объектами Date здесь заключается в том, чтобы каким-то образом воспользоваться синтаксическим анализом даты / времени.

kshetline 25.04.2018 10:17

С такой логикой он мог бы пропустить новую дату ("1/1/2001" ... тоже. В конце концов, он имеет дело с числами, поэтому он и получил это NaN в первую очередь. Интересно, почему он не просто спросите, как анализирует объект Date, а не в этом примере.Но его часы все равно возвращают числа.

ibrahim tanyalcin 25.04.2018 10:21

Вы можете сначала извлечь часы, минуты и секунды из 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.");

Остальное оставил как есть.

Вы можете попробовать это решение, возможно, оно сработает для вас

Другие вопросы по теме