<p>moment.date ($ day) .month ($ month) .year ($ year) تتصرف بشكل مختلف عن اللحظة ([$ year ، $ month ، $ date])</p>

تم إنشاؤها على ٢ نوفمبر ٢٠١٥  ·  4تعليقات  ·  مصدر: moment/moment

يتم تحليل التاريخ بشكل مختلف باستخدام هاتين الطريقتين المحددتين.
عند ضبط التاريخ على 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 بإجراء عملية حسابية عن طريق إضافة عدد مناسب من الأيام وإعادة لف الشهر والسنة إذا لزم الأمر ، وليس أفضل ممارسة ، كان من الأفضل لو تم الرمي).

الحل هو دائمًا تعيين السنة والشهر واليوم والساعة والدقيقة ، بهذا الترتيب لتجنب مثل هذه المشكلات.

ال 4 كومينتر

لاحظ أن هذا

$('#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 جيدة ؛ لنفعل ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات