| الدالة | الوظيفة |
|---|---|
| getFullYear() | استخراج السنة |
| getMonth() | استخراج الشهر (0-11) |
| getDate() | استخراج يوم الشهر |
| getDay() | استخراج يوم الأسبوع (0-6) |
| getTime() | المللي ثانية منذ 1970 |
| toLocaleDateString() | عرض التاريخ بتنسيق محلي |
يوفر كائن Date المدمج في جافاسكريبت وسيلة للتعامل مع التواريخ والأوقات. لإنشاء كائن يمثل اللحظة الحالية، تستخدم new Date() بدون وسائط. ويمكن أيضاً إنشاء تاريخ محدد عبر تمرير السنة والشهر واليوم — مع تنبيه مهم: الأشهر في جافاسكريبت تبدأ فهرستها من صفر، أي أن يناير هو 0 وديسمبر هو 11، وهذا مصدر شائع جداً للأخطاء عند المبتدئين.
يوفر كائن Date دوالاً لاستخراج أجزاء التاريخ: getFullYear() للسنة، getMonth() للشهر (بفهرسة تبدأ من صفر كما ذكرنا)، getDate() ليوم الشهر، getDay() ليوم الأسبوع (0 للأحد حتى 6 للسبت)، وgetHours وgetMinutes وgetSeconds للوقت. توجد أيضاً دوال setter مقابلة (setFullYear, setMonth...) لتعديل أجزاء التاريخ بعد الإنشاء.
من أكثر الاستخدامات شيوعاً هو getTime() الذي يُعيد عدد المللي ثانية منذ منتصف ليلة 1 يناير 1970 (يُسمى Unix Epoch) — وهذا الرقم مفيد جداً لحساب الفرق بين تاريخين بطرح رقمين من بعضهما، ثم تحويل الناتج (بالمللي ثانية) إلى ثوانٍ أو دقائق أو أيام حسب الحاجة.
للتعامل مع التنسيق (Formatting) بشكل احترافي وعرض التواريخ بصيغ مقروءة بلغات مختلفة، توفر جافاسكريبت الحديثة toLocaleDateString() وtoLocaleTimeString()، واللتان تدعمان تمرير رمز اللغة (مثل "ar-EG" للعربية) لعرض التاريخ بالتنسيق المحلي المناسب تلقائياً دون الحاجة لمكتبات خارجية للحالات البسيطة.
| 1 | const الآن = new Date(); // اللحظة الحالية |
| 2 | const تاريخ_محدد = new Date(2024, 0, 15); // 15 يناير 2024 (الشهر 0 = يناير) |
| 3 | |
| 4 | الآن.getFullYear(); // السنة |
| 5 | الآن.getMonth(); // الشهر (0-11) |
| 6 | الآن.getDate(); // يوم الشهر |
| 7 | الآن.getDay(); // يوم الأسبوع (0-6) |
مثال 1: حساب الفرق بين تاريخين بالأيام
| 1 | // حساب الفرق بين تاريخين بالأيام |
| 2 | const تاريخ1 = new Date(2024, 0, 1); |
| 3 | const تاريخ2 = new Date(2024, 2, 15); |
| 4 | |
| 5 | const الفرق_بالميلي_ثانية = تاريخ2.getTime() - تاريخ1.getTime(); |
| 6 | const الفرق_بالأيام = الفرق_بالميلي_ثانية / (1000 * 60 * 60 * 24); |
| 7 | console.log(الفرق_بالأيام); // 74 |
مثال 2: تنسيق التاريخ محلياً باللغة العربية
| 1 | // عرض التاريخ بتنسيق محلي عربي |
| 2 | const اليوم = new Date(); |
| 3 | console.log(اليوم.toLocaleDateString("ar-EG")); // مثال: ١٥/٦/٢٠٢٦ |
| 4 | console.log(اليوم.toLocaleDateString("ar-EG", { |
| 5 | weekday: "long", |
| 6 | year: "numeric", |
| 7 | month: "long", |
| 8 | day: "numeric", |
| 9 | })); |