العمل مع التواريخ في TypeScript: المكتبات الشائعة والأمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع التواريخ في TypeScript: نظرة عامة على المكتبات



العمل مع التواريخ هو أحد أكثر المهام شيوعًا في تطوير الويب. في TypeScript (و JavaScript) الكائن المدمج Date له إمكانيات محدودة وواجهة برمجة تطبيقات غير مريحة. لحسن الحظ، هناك العديد من المكتبات التي تبسط تنسيق وتحليل ومقارنة ومعالجة التواريخ. في هذه المقالة، سنستعرض أربع مكتبات شائعة: date-fns، Day.js، Luxon و Moment.js، وسنعرض أمثلة على استخدامها في TypeScript.



1. date-fns — معيارية وخفيفة



date-fns هي مكتبة حديثة مبنية على مبدأ المعيارية. يمكنك استيراد الوظائف التي تحتاجها فقط، مما يسمح بالحفاظ على حجم الحزمة في حده الأدنى. تدعم date-fns TypeScript بشكل ممتاز من الصندوق.



التثبيت:

npm install date-fns# أوyarn add date-fns


أمثلة على الاستخدام:

import { format, addDays, differenceInDays, parseISO } from 'date-fns';

// التنسيقconst today = new Date();console.log(format(today, 'yyyy-MM-dd')); // 2025-03-15

// إضافة أيامconst future = addDays(today, 10);console.log(format(future, 'dd.MM.yyyy')); // 25.03.2025

// الفرق بين التواريخconst start = parseISO('2025-01-01');const end = parseISO('2025-03-15');console.log(differenceInDays(end, start)); // 73

// التحقق من عطلة نهاية الأسبوعimport { isWeekend } from 'date-fns';console.log(isWeekend(new Date(2025, 2, 15))); // true (السبت)


2. Day.js — بديل خفيف لـ Moment.js



Day.js هي مكتبة بسيطة (فقط 2 كيلوبايت) مع واجهة برمجة تطبيقات مشابهة جدًا لـ Moment.js. إنها مثالية إذا كنت ترغب في الترحيل من Moment ولكن تقليل حجم الحزمة. تدعم Day.js TypeScript من خلال الأنواع.



التثبيت:

npm install dayjs# أوyarn add dayjs


أمثلة على الاستخدام:

import dayjs from 'dayjs';import relativeTime from 'dayjs/plugin/relativeTime';import utc from 'dayjs/plugin/utc';

dayjs.extend(relativeTime);dayjs.extend(utc);

// الإنشاء والتنسيقconst now = dayjs();console.log(now.format('DD/MM/YYYY HH:mm')); // 15/03/2025 14:30

// الوقت النسبيconsole.log(dayjs('2025-03-10').fromNow()); // 5 days ago

// العمل مع UTCconst utcDate = dayjs.utc('2025-03-15T12:00:00Z');console.log(utcDate.local().format('HH:mm')); // الوقت المحلي

// المعالجاتconst nextMonth = dayjs().add(1, 'month');console.log(nextMonth.format('MMMM YYYY')); // April 2025


3. Luxon — قوي وحديث



Luxon هو خليفة Moment.js، تم تطويره بواسطة نفس الفريق. يستخدم الكائن الأصلي DateTime، ويدعم المناطق الزمنية، والفواصل الزمنية، والمدد. Luxon مكتوب بـ TypeScript وله كتابة ممتازة.



التثبيت:

npm install luxon# أوyarn add luxon


أمثلة على الاستخدام:

import { DateTime, Interval, Duration } from 'luxon';

// الإنشاء والتنسيقconst dt = DateTime.now();console.log(dt.toFormat('yyyy LLL dd')); // 2025 Mar 15

// المناطق الزمنيةconst ny = DateTime.now().setZone('America/New_York');console.log(ny.toLocaleString(DateTime.DATETIME_FULL)); // March 15, 2025 at 9:30 AM EDT

// الفواصل الزمنيةconst start = DateTime.fromISO('2025-01-01');const end = DateTime.fromISO('2025-03-15');const interval = Interval.fromDateTimes(start, end);console.log(interval.length('days')); // 73

// المددconst dur = Duration.fromObject({ hours: 5, minutes: 30 });console.log(dur.toHuman()); // 5 hours, 30 minutes

// التحليل

توصيات