يتم تحليل التاريخ بشكل مختلف باستخدام هاتين الطريقتين المحددتين.
عند ضبط التاريخ على October 31, 2015
. ترجع الطريقة المتسلسلة 2015-10-01
بينما ترجع طريقة init 2015-10-31
var year = 2015;
var month = 9; //october
var day = 31;
console.log(moment().date(day).month(month).year(year).format('YYYY-MM-DD'));
//2015-10-01
console.log(moment([year, month, day]).format('YYYY-MM-DD'));
//2015-10-31
شبيبة كمان: http://jsfiddle.net/dgnjer7z/
لاحظ أن هذا
$('#chained').val(moment().year(2015).month(9).date(31).format('YYYY-MM-DD'));
إرجاع بشكل صحيح 2015-10-31
في الواقع ، تحاكي اللحظة سلوك كائن تاريخ JS.
قم أولاً بإنشاء moment()
يمنحك التاريخ الحالي (3 نوفمبر اعتبارًا من اليوم). تحاول تعيين يومه على 31
لكن نوفمبر به 30 يومًا فقط ، لذلك يضيف كائن التاريخ الأصلي لـ JS "بذكاء" يومًا واحدًا وتاريخ الانتقال إلى الأول من ديسمبر (يمكنك تعيين اليوم على أي رقم مجنون ، مثل 42 ، وسيقوم JS بإجراء عملية حسابية عن طريق إضافة عدد مناسب من الأيام وإعادة لف الشهر والسنة إذا لزم الأمر ، وليس أفضل ممارسة ، كان من الأفضل لو تم الرمي).
الحل هو دائمًا تعيين السنة والشهر واليوم والساعة والدقيقة ، بهذا الترتيب لتجنب مثل هذه المشكلات.
حقيقة معالجة الفائض موثقة بالفعل:
http://momentjs.com/docs/#/get -set / date /
الحصول على أو تحديد يوم الشهر.
يقبل الأرقام من 1 إلى 31. إذا تم تجاوز النطاق ، فسيظهر فقاعة حتى الأشهر.
على الرغم من أن السلوك في حافظة الزاوية مثل سلوكك مثير للدهشة حقًا.
لقد فتحت PR في وثائق الريبو يشرح هذه المشكلة الشائعة
https://github.com/moment/momentjs.com/pull/244
نعم ، لست متأكدًا من أن هذا قابل للإصلاح. لا تعرف Moment أنك ستحدد الشهر ، لذا فهي تحاول تعيين اليوم في الشهر الحالي ، والذي قد يكون أو لا يحتوي على 31. إنه يجهل نواياك. أعتقد أن وثيقة العلاقات العامة الخاصة بـ @ jakub-g جيدة ؛ لنفعل ذلك.
التعليق الأكثر فائدة
لاحظ أن هذا
إرجاع بشكل صحيح
2015-10-31
في الواقع ، تحاكي اللحظة سلوك كائن تاريخ JS.
قم أولاً بإنشاء
moment()
يمنحك التاريخ الحالي (3 نوفمبر اعتبارًا من اليوم). تحاول تعيين يومه على31
لكن نوفمبر به 30 يومًا فقط ، لذلك يضيف كائن التاريخ الأصلي لـ JS "بذكاء" يومًا واحدًا وتاريخ الانتقال إلى الأول من ديسمبر (يمكنك تعيين اليوم على أي رقم مجنون ، مثل 42 ، وسيقوم JS بإجراء عملية حسابية عن طريق إضافة عدد مناسب من الأيام وإعادة لف الشهر والسنة إذا لزم الأمر ، وليس أفضل ممارسة ، كان من الأفضل لو تم الرمي).الحل هو دائمًا تعيين السنة والشهر واليوم والساعة والدقيقة ، بهذا الترتيب لتجنب مثل هذه المشكلات.