مسج يقارن وقت البدء وعرض وقت الانتهاء 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.log(difference_in_milliseconds);
    return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");
0
يبدو أن "1/1/2001" + start_times لا يعرض سلسلة صالحة يمكن تحليلها بواسطة التاريخ . يجب عليك إصلاح خيارات
وأضاف المؤلف CertainPerformance, مصدر

2 إجابة

يمكنك استخراج الساعات والدقائق والثواني من 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.log(difference_in_milliseconds);
return difference_in_milliseconds > 0;
}, "End time should be grater than start time.");

الأشياء المتبقية ظللت كما هي.

يمكنك تجربة هذا الحل ، ربما ستعمل من أجلك

0
وأضاف

ربما أفتقد شيئًا ما (لم أستخدمه على الإطلاق في الساعة ، وأظن أن ما تضيفه هو رقم) ولكن إذا فعلت:

(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;

في حين أن؟

0
وأضاف
لا يهم. يريد الفرق
وأضاف المؤلف ibowankenobi, مصدر
مع هذا المنطق ، كان بإمكانه تخطي "التاريخ الجديد" ("1/1/2001" .. كذلك ، فهو يتعامل مع الأرقام بعد كل شيء ، وهذا هو السبب في حصوله على NaN في المقام الأول. نسأل كيف يوزع كائن التاريخ بدلاً من هذا المثال ، ولكن لا يزال رقمه الزمني يعرض الأرقام.
وأضاف المؤلف ibowankenobi, مصدر
شكرا لك على نقاطك راجع للشغل. أنا أقدر ذلك.
وأضاف المؤلف ibowankenobi, مصدر
Date.now() لن يعتمد على البدء من 1/1/2001.
وأضاف المؤلف kshetline, مصدر
ثم يمكنك تخطي Date.now() أيضًا (والذي قد يتغير بمقدار 1 ملي ثانية من سطر إلى آخر) وطرح start_times فقط من end_times . وأظن أن الهدف الكامل من العبث مع كائنات التاريخ هنا هو الاستفادة من تحليل التاريخ/الوقت بطريقة أو بأخرى.
وأضاف المؤلف kshetline, مصدر