Mayur Panchal
Mayur Panchal

Reputation: 655

Jquery compare Start time and End time display NaN

When i try to compare end time not greater start time It return every time display 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.log(difference_in_milliseconds);
    return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");

Upvotes: 0

Views: 232

Answers (2)

Sambhaji Katrajkar
Sambhaji Katrajkar

Reputation: 407

You can extract hours, minutes and seconds from start_times and end_times firstly. And then make the changes in function as below:

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.log(difference_in_milliseconds);
return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");

The remaining things I kept as it is.

You can try this solution, Maybe it will work for you

Upvotes: 1

ibrahim tanyalcin
ibrahim tanyalcin

Reputation: 6501

Maybe I am missing something (never used clockpicker, I suspect what you are adding is a number) but if you do:

(new Date("1/1/2001 "+67)) - (new Date("1/1/2001 "+767))

You get NaN. Wouldn't it be better to use:

var dtStart = Date.now() + start_times;
var dtEnd = Date.now() + end_times;

instead?

Upvotes: 1

Related Questions