يؤدي تمرير قيمة عشوائية إلى moment(value)
إلى ظهور تحذير بالإيقاف وفقًا لـ # 1407.
سيكون من الرائع حقًا إذا كانت هناك طريقة ما لاستخدام هذا التحليل ولكن دون الرجوع إلى مُنشئ التاريخ. الطريقة الوحيدة التي وجدتها حتى الآن هي خرقاء إلى حد ما:
if (moment.isDate(value)) {
return moment(value);
} else {
return moment(value, moment.ISO_8601);
}
وحتى ذلك الحين لا يزال هذا لا يحلل سلاسل ASP.net /Date(1198908717056)/
.
سيكون أبسط خيار هو السماح بالخيار الصارم في شكل وسيطتين: moment(value, true)
.
شكرا.
فقط للتوضيح ، أنت تطلب طريقة لتعطيل التراجع بدلاً من إظهار التحذير - دون استخدام الوضع المتشدد ، أليس كذلك؟
نعم ، أريد تحليل جميع الأشياء التي يدعمها moment()
تلقائيًا ، ولكن إذا فشلت جميعها ، فبدلاً من طباعة تحذير واستخدام مُنشئ Date
، أريده أن ينتج تاريخًا غير صالح.
أريد الاشتراك بشكل استباقي في سلوك إصدار مستقبلي من moment
، حيث ستتم إزالة احتياطي المُنشئ Date
المتوقف تمامًا.
لست متأكدًا تمامًا مما تقصده بالوضع المتشدد. هل تقصد عند تمرير التنسيق الدقيق مثل moment(value, 'YYYY-MM-DD')
؟ إذا كان الأمر كذلك ، فهذا لا يساعد لأنه 1. هو مطول بشكل مانع و 2. لا يزال لا يتضمن جميع التنسيقات التي يمكن لـ moment(value)
تحليلها قبل أن تلجأ إلى المُنشئ Date
.
يتم تمكين الوضع المتشدد بتمرير true
كمعامل أخير. إنه موجود في المستندات. يعني هذا في الأساس أن السلسلة يجب أن تتطابق مع التنسيق _exactly_.
نظرًا لأن التنسيقات المدعومة مباشرةً بواسطة moment(String)
مدرجة في المستندات ، أعتقد أنه سيكون من المقبول اعتبار هذا مثل الوضع المتشدد. بمعنى آخر ، إضافة moment(String, Boolean)
.
نعم هذا سيكون أمرا رائعا. شكرا.
SystemParadox نعم ، ما تريده مدعوم. لقد تجاوزت للتو moment.createFromInputFallback(config)
:
moment.createFromInputFallback = function (config) {
config._d = new Date(NaN);
}
أوافق على أنه ليس تافهاً ، لكنه ممكن ؛-)
هذا مفيد ، لكنه يغير الإعداد عالميًا.
ماذا لو كنت أرغب في الترحيل التدريجي لقاعدة بيانات مكالمة واحدة في كل مرة؟
لماذا لا يمكننا فقط إضافة دعم لـ moment(String, true)
؟
إعادة الفتح ، على الرغم من وجود حل بديل ، فإن وجود هذا في واجهة برمجة التطبيقات العامة من شأنه أن يساعد في مجموعة متنوعة من حالات الاستخدام. ضع في اعتبارك أيضًا # 2535 ، طالبًا بالتحقق من صحة التنسيقات المضمنة فقط.
ما هو مطلوب هو اللحظة. JS_DATE ثابت ، وهذا يعني فقط تمرير الإدخال إلى new Date
، تحقق من https://github.com/moment/moment/issues/1686. قبول طلبات السحب.
SystemParadox @ في حال كان مفيدًا ، واجهت مشكلة مماثلة
function disableNativeDateFallback(config) {
config._d = new Date(parseFloat('NaN')); // an invalid date
}
function makeMomentWrapper(momentFn) {
return function() {
var prevFallback = moment.createFromInputFallback;
moment.createFromInputFallback = disableNativeDateFallback;
var result = momentFn.apply(null, arguments);
moment.createFromInputFallback = prevFallback;
return result;
}
};
var momentStrict = makeMomentWrapper(moment);
momentStrict.utc = makeMomentWrapper(moment.utc);
إنهم يعملون عن طريق استبدال createFromInputFallback
لفترة وجيزة ثم استعادته قبل أن يعودوا لتجنب التأثير على التعليمات البرمجية الأخرى. يمكن لأي رمز أنت مستعد لترحيله استخدام momentStrict
و momentStrict.utc
بدلاً من moment
و moment.utc
والباقي يمكن أن يظل كما هو.
التعليق الأكثر فائدة
SystemParadox @ في حال كان مفيدًا ، واجهت مشكلة مماثلة
إنهم يعملون عن طريق استبدال
createFromInputFallback
لفترة وجيزة ثم استعادته قبل أن يعودوا لتجنب التأثير على التعليمات البرمجية الأخرى. يمكن لأي رمز أنت مستعد لترحيله استخدامmomentStrict
وmomentStrict.utc
بدلاً منmoment
وmoment.utc
والباقي يمكن أن يظل كما هو.