في هذا الدرس 6تصفّح المواضيع
يخزن كل كائن Date في JavaScript داخلياً رقماً صحيحاً واحداً فقط: هو عدد أجزاء الألف من الثانية (المللي ثانية) المنقضية منذ منتصف ليل 1 يناير 1970 بالتوقيت العالمي المنسق UTC (المعروف عالمياً باسم نقطة بداية الزمن الرقمي Unix Epoch).
وبما أن الثانية تساوي 1000 مللي ثانية واليوم يساوي 86,400,000 مللي ثانية، فإن هذا التمثيل الرقمي يجعل مقارنة اللحظات الزمنية وطرحها عملية حسابية دقيقة وموحدة حول العالم.
ننشئ كائن التاريخ باستخدام الباني new Date(...) بثلاث صيغ موثوقة: استدعاء new Date() بلا وسائط لالتقاط اللحظة الحالية، أو تمرير نص قياسي بصيغة ISO 8601 مثل new Date("2026-11-06T10:30:00Z")، أو تمرير أرقام السنة والشهر الصفري واليوم مثل new Date(2026, 10, 6).
const launch = new Date('2026-11-06T09:00:00Z');
const localExam = new Date(2026, 10, 6, 14, 30);
document.getElementById('dt-create').textContent =
`ISO UTC: ${launch.toISOString()} | Year: ${localExam.getFullYear()}`;
انتبه لأشهر مفاجأة في تاريخ JavaScript: الأشهر مرقمة فهرسياً من الصفر (0 ليناير حتى 11 لديسمبر)، بينما تبدأ أيام الشهر في getDate() من الرقم 1 كالمعتاد! لذلك أضف دائماً + 1 عند عرض رقم الشهر، أو استخدمه مباشرةً كفهرس في مصفوفة أسماء الأشهر:
| دالة القراءة | النطاق الرقمي المرجع | تنبيه عملي مهم |
|---|---|---|
d.getFullYear() | سنة من 4 أرقام مثل 2026 | استخدمها دائماً وتجنب الدالة المهجورة getYear() |
d.getMonth() | من 0 إلى 11 | فهرس صفري! أضف 1 لعرض رقم الشهر البشري |
d.getDate() | من 1 إلى 31 | رقم اليوم داخل الشهر الميلادي |
d.getDay() | من 0 إلى 6 | ترتيب يوم الأسبوع (0 الأحد .. 6 السبت) |
تعدل دوال الضبط مثل setFullYear() وsetMonth() وsetDate() كائن التاريخ موضعياً مع ميزة التصحيح التلقائي لحدود الأشهر؛ فإضافة 7 أيام إلى 28 يناير تنتقل تلقائياً وبذكاء إلى 4 فبراير!
ولحساب عدد الأيام الفاصلة بين تاريخين، اطرح طابعيهما الزمنيين ثم اقسم الناتج على 86_400_000 مللي ثانية لليوم الواحد.
const start = new Date('2026-11-01T00:00:00Z');
const deadline = new Date('2026-11-16T00:00:00Z');
const msPerDay = 1000 * 60 * 60 * 24;
const daysLeft = Math.round((deadline - start) / msPerDay);
document.getElementById('diff-out').textContent =
`Month #: ${start.getUTCMonth() + 1} | Window: ${daysLeft} days`;
عندما تحتاج فقط إلى الرقم اللحظي الحالي بالمللي ثانية—لقياس زمن تنفيذ عملية برمجية أو ختم وقت حدث معين—استدعِ الدالة الساكنة الخفيفة Date.now() مباشرةً دون تكلفة إنشاء كائن new Date() جديد بالذاكرة.
بدلاً من تركيب نصوص الأيام والأشهر يدوياً، توفر المتصفحات الحديثة تنسيقاً محلياً احترافياً عبر date.toLocaleDateString() أو الواجهة القياسية السريعة new Intl.DateTimeFormat(locale, options) التي تدعم أسماء الأشهر والتقاويم بالعربية والإنجليزية تلقائياً!
const eventDate = new Date('2026-11-06T12:00:00Z');
const enFmt = new Intl.DateTimeFormat('en-US', {
dateStyle: 'long',
timeZone: 'UTC',
});
document.getElementById('loc-out').textContent =
`Event: ${enFmt.format(eventDate)} | Stamp: ${Date.now() > 0}`;
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس تمثيل الزمن بالمللي ثانية منذ 1970، وإنشاء كائنات Date بصيغة ISO الآمنة، والتعامل مع فهرسة الأشهر الصفرية، وحساب الفروق الزمنية، واستخدام Date.now()، والتنسيق المحلي عبر Intl.DateTimeFormat. الخطوة التالية: ابدأ الآن الفصل السادس (التحكم في مسار التنفيذ) لتوجيه قرارات البرنامج الشرطية بذكاء!
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Unix Epoch نقطة بداية الزمن Unix Epoch
- منتصف ليل 1 يناير 1970 بالتوقيت العالمي UTC وهو المرجع الصفري لعداد المللي ثانية في JavaScript.
- للمراجعة
- 02 Date.now() دالة الطابع اللحظي Date.now
- دالة ساكنة ترجع عدد المللي ثانية الحالي مباشرةً كرقم سريع دون حجز كائن Date جديد.
- للمراجعة
- 03 Zero-Indexed Month فهرسة الأشهر الصفرية (0..11)
- قاعدة ترقيم الأشهر في كائن Date حيث يبدأ يناير بالرقم 0 وينتهي ديسمبر بالرقم 11.
- للمراجعة
- 04 Intl.DateTimeFormat منسق التاريخ الدولي Intl.DateTimeFormat
- واجهة قياسية مدمجة تنسق عرض التواريخ والأوقات وفق لغة المستخدم ومنطقته الزمنية.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 UTC UTC
- Coordinated Universal Time
- التوقيت العالمي المنسق المعتمد داخلياً لتوحيد الطوابع الزمنية حول العالم.
- للمراجعة
- 02 ISO 8601 ISO 8601
- International Date & Time Format Standard
- الصيغة القياسية الدولية لكتابة التاريخ والوقت (YYYY-MM-DD) الخالية من التباس ترتيب اليوم والشهر.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح مثال فرق الموعد النهائي في محرر التجربة وعدّل تاريخ deadline إلى يوم 25 نوفمبر وتحقق من عدد الأيام.
-
افتح مثال التنسيق الدولي في محرر التجربة وغيّر رمز اللغة من "en-US" إلى "ar-EG" لمشاهدة التاريخ بالعربية.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.