العمل مع التواريخ والوقت في JavaScript: دليل شامل لـ Node.js

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

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

ابدأ الدورة
```html

العمل مع التواريخ والوقت في JavaScript (Node.js): من الأساسيات إلى التقنيات المتقدمة



العمل مع التواريخ والوقت هو أحد أكثر المهام شيوعًا في تطوير الويب. سواء كان تسجيل الأحداث، أو معالجة بيانات المستخدم، أو جدولة المهام، أو عرض الطوابع الزمنية — لا يمكن الاستغناء عن القدرة على إدارة التواريخ في JavaScript. في هذه المقالة، سنستعرض جميع الجوانب الرئيسية للعمل مع التواريخ في بيئة Node.js: من الإنشاء والتنسيق إلى المعالجات المعقدة مع المناطق الزمنية واستخدام المكتبات الشائعة.



الأساسيات: كائن Date في JavaScript



الكائن المدمج Date هو الأساس للعمل مع التواريخ. يخزن عدد الميلي ثانية المنقضية منذ 1 يناير 1970 (حقبة Unix).



إنشاء تاريخ



هناك عدة طرق لإنشاء نسخة من Date:



// التاريخ والوقت الحاليينconst now = new Date();console.log(now); // 2025-03-15T10:30:00.000Z

// من الميلي ثانية (Unix timestamp)const fromTimestamp = new Date(1742025000000);console.log(fromTimestamp); // 2025-03-15T10:30:00.000Z

// من سلسلة نصية (ISO 8601)const fromString = new Date('2025-03-15T10:30:00');console.log(fromString);

// من المكونات (السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية، الميلي ثانية)const fromComponents = new Date(2025, 2, 15, 10, 30, 0, 0); // الأشهر: 0-11console.log(fromComponents); // March 15, 2025 10:30:00


هام: الأشهر في JavaScript تبدأ من 0 (يناير — 0، ديسمبر — 11).



الحصول على مكونات التاريخ



طرق استخراج الأجزاء الفردية من التاريخ:



const date = new Date('2025-03-15T10:30:45.123Z');

console.log(date.getFullYear()); // 2025console.log(date.getMonth()); // 2 (مارس)console.log(date.getDate()); // 15console.log(date.getDay()); // 6 (السبت، 0 - الأحد)console.log(date.getHours()); // 10console.log(date.getMinutes()); // 30console.log(date.getSeconds()); // 45console.log(date.getMilliseconds());// 123console.log(date.getTime()); // الميلي ثانية منذ الحقبة


تنسيق التواريخ في Node.js



يوفر Date القياسي إمكانيات تنسيق محدودة. للإخراج بشكل قابل للقراءة، استخدم toLocaleDateString() و toLocaleString().



const date = new Date('2025-03-15T10:30:00');

// تنسيق محليconsole.log(date.toLocaleDateString('ar-SA')); // ١٥/٠٣/٢٠٢٥console.log(date.toLocaleTimeString('ar-SA')); // ١٠:٣٠:٠٠console.log(date.toLocaleString('ar-SA')); // ١٥/٠٣/٢٠٢٥, ١٠:٣٠:٠٠ ص

// مع خياراتconst options = { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long', hour: '2-digit', minute: '2-digit'};console.log(date.toLocaleString('ar-SA', options)); // السبت، 15 مارس 2025، 10:30 ص


تنسيق مخصص



للتحكم الكامل، اكتب دالة بسيطة:



function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {  const map = {    YYYY: date.getFullYear(),    MM: String(date.getMonth() + 1).padStart(2, '0'),    DD: String(date.getDate()).padStart(2, '0'),    HH: String(date.getHours()).padStart(2, '0'),    mm: String(date.getMinutes()).padStart(2, '0'),    ss: String(date.getSeconds()).padStart(2, '0'),  };  return format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => map[match]);}

console.log(formatDate(new Date(), 'DD.MM.YYYY')); // 15.03.2025console.log(formatDate(new Date(), 'HH:mm:ss')); // 10:30:00


التلاعب بالتواريخ: الإضافة، الطرح، المقارنة



يمكن تعديل التواريخ مباشرة عبر طرق set* أو من خلال العمل مع الميلي ثانية.



إضافة وطرح الوقت



const date = new Date('2025-03-15T10:30:00');

// إضافة 5 أيامdate.setDate(date.getDate() + 5);console.log(date); // 2025-03-20T10:30:00

// إضافة ```

المدونات

توصيات الكتب