تجاوز إمكانات التاريخ والوقت المضمنة في JavaScript باستخدام إحدى مكتبات الاستبدال هذه.
يعد دعم JavaScript المدمج لمعالجة التاريخ مفيدًا ، ولكن قد يكون من الصعب استخدامه. غالبًا ما تكون العمليات المعقدة مثل تحويلات المنطقة الزمنية وتنسيق التاريخ صعبة.
لحسن الحظ ، تتوفر العديد من الحزم التي تجعل العمل مع التواريخ والأوقات في JavaScript أقل إرهاقًا. هنا ، ستتعرف على بعض هذه الحزم وكيف يمكنك البدء في العمل على هذه الحزم.
عندما يتعلق الأمر بالعمل مع التواريخ والأوقات ، كائن JavaScript Date الأصلي لديه وظائف محدودة.
قدمت Moment.js ، مكتبة JavaScript ، العديد من الميزات غير المتوفرة في كائن التاريخ الأصلي. نتيجة لذلك ، أصبحت مكتبة الانتقال للعمل مع التواريخ والأوقات.
لتثبيت Moment.js مع npm ، قم بتشغيل الأمر التالي من دليل المشروع الخاص بك:
npm ثَبَّتَ لحظة
بعد التثبيت ، يمكنك استيراد Moment.js إلى مشروعك وإجراء العمليات مع المكتبة:
مقدار ثابت لحظة = يتطلب('لحظة');
مقدار ثابت الآن = لحظة () ؛
مقدار ثابت nowString = now.format ("YYYY-MM-DD HH: mm: ss");
وحدة التحكم.سجل("التاريخ والوقت الحاليان $ {nowString}`);
يستورد مقتطف الشفرة هذا مكتبة Moment.js ويقوم بإنشاء كائن لحظة باستخدام التاريخ والوقت الحاليين بامتداد لحظة() وظيفة. ثم يوضح كيفية تنسيق كائن التاريخ الذي تم إنشاؤه كسلسلة ذات الامتداد شكل() الطريقة ، والتي تأخذ تنسيق التاريخ / الوقت كوسيطة لها.
يمكنك أيضًا استخدام هذه المكتبة لإضافة فترات زمنية وطرحها:
مقدار ثابت addTenMinutes = لحظة ().10, 'دقائق');
وحدة التحكم.سجل(`$ {addTenMinutes.format ("h: mm a")}`);
مقدار ثابت طرح يومين = لحظة (). طرح (2, 'أيام');
وحدة التحكم.سجل(`$ {subtractTwoDays.format ('dddd، MMMM Do YYYY')}`);
يقوم البرنامج بتسجيل متغيرين إلى وحدة التحكم بتنسيقات مختلفة. الأول، addTenMinutes، يحمل نتيجة إضافة 10 دقائق إلى التاريخ والوقت الحاليين. الثاني، طرح يومين، لها قيمة التاريخ والوقت الحاليين مع طرح يومين منها.
يمكن لـ Moment.js إجراء عمليات أخرى مثل التحقق من السنوات الكبيسة والتحويل من تنسيق تاريخ إلى آخر.
من المهم ملاحظة أن Moment.js لم يعد يحتفظ به فريق المطورين الأساسي. ينصح المطورون باستخدام بديل مثل Luxon.js.
Luxon.js هي مكتبة جافا سكريبت قوية وأكثر حداثة للتعامل مع التواريخ. بديل لـ Moment.js ، فهو يعالج قيود المكتبة القديمة مثل قابلية التغيير.
يمكنك تثبيت Luxon باستخدام npm ثم استيراد ملف التاريخ والوقت فئة في مشروع Node.js الخاص بك باستخدام امتداد يتطلب() وظيفة:
مقدار ثابت {DateTime} = يتطلب("لوكسون");
في Luxon ، تشير كائنات DateTime إلى مثيلات الوقت التي تصل إلى أجزاء من الثانية.
يمكنك إنشاء ملفات التاريخ والوقت العناصر والوصول إلى مكوناتها ، مثل السنة والشهر والدقيقة والثانية:
مقدار ثابت now = DateTime.now () ؛
مقدار ثابت سنة = الآن.
مقدار ثابت دقيقة = now.minute ؛
مقدار ثابت الثانية = now.second ؛
هذا الرمز يخلق ملف التاريخ والوقت يمثل التاريخ والوقت الحاليين باستخدام الآن() طريقة. وبعد ذلك يصل إلى مكونات ذلك التاريخ باستخدام ملف سنة, دقيقة، و ثانية ملكيات.
الفرق الرئيسي بين Luxon.js و Moment.js هو طابعها الثابت. جميع كائنات DateTime غير قابلة للتغيير في Luxon ، مما يعني أنه لا يمكنك تعديل خصائص DateTime. بدلاً من ذلك ، يمكنك إنشاء مثيلات DateTime جديدة من مثيلات موجودة.
على سبيل المثال:
مقدار ثابت now = DateTime.now () ؛
مقدار ثابت غدًا = now.plus ({ أيام: 1 });
هذا الرمز يخلق ملف التاريخ والوقت كائن اسمه غداً على أساس الآن الكائن ، باستخدام زائد طريقة تمريرها بقيمة يوم واحد كوسيطة. تقوم طريقة الجمع بإنشاء كائن DateTime جديد مع إضافة عدد الأيام المحدد إلى الكائن الأصلي.
ميزة أخرى لـ Luxon.js هي دعم المنطقة الزمنية الموثوق به ، وهو أمر ضروري للعمل مع التواريخ والأوقات في تطبيقات الويب الحديثة. تستخدم المكتبة تدويل API في المتصفحات الحديثة لتوفير دعم دقيق للمنطقة الزمنية.
ومع ذلك ، فإن أحد الجوانب السلبية لـ Luxon.js هو محدودية موارد المجتمع.
Date-fns هي مكتبة JavaScript خفيفة الوزن جدًا مصممة للعمل مع التواريخ والأوقات. يعتمد على كائن JavaScript الأصلي.
يستخدم Date-fns تقنيات البرمجة الوظيفية ويتضمن ميزة غير قابلة للتغيير ، مما يجعل العمل مع التواريخ أبسط ويقلل من احتمالية وجود أخطاء في التعليمات البرمجية الخاصة بك.
بعد تثبيت date-fns مع npm ، قم باستيراد الحزمة إلى برنامجك باستخدام الوظيفة المطلوبة:
مقدار ثابت {format، addDays} = يتطلب("تاريخ fns");
Date-fns معياري. يحتوي على الكثير من الوظائف التي يمكنك الوصول إليها عن طريق إتلاف الحزمة ، كما هو موضح في كتلة التعليمات البرمجية أعلاه. يستورد الرمز التنسيق ووظائف addDays فقط من مكتبة date-fns.
فيما يلي مثال على كيفية استخدام هاتين الوظيفتين:
مقدار ثابت اليوم = جديدتاريخ();
مقدار ثابت formattedDate = التنسيق (اليوم ، "yyyy-MM-dd");
وحدة التحكم.log (تاريخ التنسيق) ؛
مقدار ثابت غدًا = تنسيق (addDays (اليوم ، 1), "yyyy-MM-dd");
وحدة التحكم.log (غدًا) ؛
يوضح هذا البرنامج استخدام مكتبة date-fns في JavaScript لتنسيق التواريخ ومعالجتها.
يخلق ملف تاريخ كائن يمثل التاريخ الحالي. يقوم بتنسيق التاريخ الحالي باستخدام ملف شكل وظيفة من مكتبة التاريخ fns.
ثم يستخدم ملف addDays وظيفة لإنشاء كائن تاريخ جديد يمثل تاريخ الغد ، وتنسيقه باستخدام ملف شكل وظيفة ، ويسجل كلاً من التاريخ الحالي وتاريخ الغد بوحدة التحكم في "yyyy-MM-dd" شكل.
الجانب السلبي لاستخدام Date-fns هو أنه لا يوفر دعمًا للمنطقة الزمنية. بدلاً من ذلك ، يستخدم مكتبة منفصلة للعمل مع المناطق الزمنية باستخدام وظائف المساعد.
تعد مكتبة Day.js ، وهي مكتبة أخرى خفيفة الوزن للغاية ، خيارًا جيدًا إذا كنت تبحث عن بديل غير قابل للتغيير وأصغر وأسرع لـ Moment.js.
يمكنك تثبيت Day.js كحزمة في مشروع JavaScript الخاص بك عن طريق تشغيل الأمر npm التالي:
npm ثَبَّتَ dayjs
لاستيراد Day.js إلى مشروعك بعد التثبيت ، يمكنك استخدام الكود التالي:
مقدار ثابت dayjs = يتطلب("dayjs")
فيما يلي بعض الوظائف والأساليب الأساسية المتوفرة في Day.js
مقدار ثابت الآن = dayjs () ؛
مقدار ثابت التاريخ = dayjs ('2023-03-23', "YYYY-MM-DD");
مقدار ثابت month = date.month () ؛
مقدار ثابت formattedDate = date.format ("ش ش ش ش ، س س س");
مقدار ثابت nextWeek = date.add (1, 'أسبوع');
ينشئ الكود أعلاه كائن Day.js جديد يمثل التاريخ والوقت الحاليين ، ويوزع سلسلة تاريخ بتنسيق مخصص ، ويحصل على الشهر من تاريخ عامل. كما يوضح أيضًا كيفية التنسيق والإضافة إلى مثيل التاريخ.
مثل Date-fns ، لا يمكن لـ Day.js توفير دعم المنطقة الزمنية بمفردها. يستخدم Day.js نظام مكون إضافي ، مما يجعل استخدامه مربكًا.
من بين الحزم المغطاة ، يعتبر Day.js هو الأكثر تشابهًا مع Moment.js. هذا يجعل من السهل التبديل بين الاثنين إذا كنت بحاجة إلى ذلك.
اختيار المكتبة المناسبة لتطبيقك
يعد اختيار مكتبة التاريخ والوقت المناسبة لتطبيق JavaScript الخاص بك قرارًا مهمًا يمكن أن يكون له تأثير كبير على جودة التعليمات البرمجية الخاصة بك وقابليتها للصيانة.
تتمتع كل مكتبة من المكتبات التي تمت مناقشتها هنا بنقاط قوتها وضعفها ، لذا من المهم تقييم متطلباتك بعناية قبل اتخاذ أي قرار.