جاري التحميل...

التاريخ والوقت

اكتب التاريخ مرةً على اللوح قبل أن تفتح المحرّر: خميس 14 مارس 2024، التاسعة والنصف، قاعة المطالعة تفتح أبوابها. هذا الصباح لا يُستبدل. لو سألت الجهاز عن «الآن» في كل تحديث، ضاع المثال وبدأت تشرح ساعةً تتحرك.

لحظة تركّبها أنت

في المصفوفة كان يكفيك أن تبحث فيصلك رقم خانة أو −1 أو نعم ولا أو الختم نفسه. التاريخ لا يُصاد بهذا الشكل. أنت من يركّب اللحظة، والسؤال الذي تطرحه عليها هو الذي يختار الرقم. سؤال عن السنة لا يحرّك الشهر، وسؤال عن الدقيقة لا يقدّم الساعة.

ستة أرقام معلّقة على هذا الصباح

لا تحفظ أسماء النداءات كقائمة معجم. انظر ماذا يساوي كل واحد في هذا الخميس بالذات، وأين يخلط الطالب الرقم بجارِه.

📊 ورقة اللوح لهذا الخميس

النداء ماذا تسأل رقم هذا الصباح الخلط الذي يتكرّر
getFullYear السنة مكتوبة كاملة 2024 تختصرها إلى 24
getMonth أين يقعد مارس داخل الكائن 2 تحسبه 3 لأنه الثالث في التقويم
getDate ترتيب اليوم في الشهر 14 تأخذه من نداء يوم الأسبوع
getDay الخميس في عدّ الأيام 4 تأخذه من ترتيب اليوم في الشهر
getHours الساعة في يوم من 24 ساعة 9 تبحث عن علامة «صباحاً»
getMinutes الدقائق 30 تطلب الثلاثين من نداء الساعة

يناير يأخذ 0، فمنه خطوتان إلى مارس فيصير 2. الأحد يأخذ 0، فمنه أربع خطوات إلى الخميس فيصير 4. الصفر الذي رأيته في المصفوفة كان أول خانة. هذان الصفران بداية تقويم، لا عنوان خانة.

ابدأ بالخانة الأولى

الخانة الأولى هي السنة. اترك رقم الشهر، واليوم، والساعة، والدقيقة لأسئلتها. هنا تسأل عن 2024 وحدها، بالشكل الذي كتبته أنت والكائن من غير اختصار.

سنة مكتوبة على اللوح

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());

ترى 2024 لأن هذا ما سلّمته في أول موضع. الـ 2 الذي وضعته للشهر لا يظهر في هذا السطر، لكنه منذ البناء يعني مارس لا فبراير. الشكل 24 اختصار بشري لا يصنعه هذا النداء.

مارس كما يقعد في الكائن

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());

كثيرون يجمعون 1 ما إن يروا 2. لا تجمعه في هذه القراءة. ما دام يناير صفراً، فـ 2 هو مارس، والقراءة صادقة. الخطوة التي ينقصك على لوحة الحائط تؤجَّل إلى الجملة التي ستُكتب لاحقاً لمن يقرأ الصفحة.

الرابع عشر والخميس

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());

14 ترتيب اليوم داخل مارس، و 4 هو الخميس إذا بدأت العدّ من الأحد. ظهورهما متتاليين لا يجعلهما سؤالاً واحداً. من يبدّل النداءين يقرأ تاريخاً ويظنه اسم يوم، أو العكس.

التاسعة والنصف

javascript
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());

الساعة 9 والدقيقة 30، وكل واحدة من نداء. اليوم هنا يُقسم من 0 عند منتصف الليل إلى 23، فالتاسعة صباح بلا حاجة إلى راية منفصلة. من ينتظر 30 من نداء الساعة فقد سأل الساعة عن الدقائق.

زيارة العشرين

javascript
let opened = new Date(2024, 2, 14, 9, 30);
let visit = new Date(2024, 2, 20, 15, 0);
console.log(visit.getTime() > opened.getTime());
console.log(visit.getDate());

الزيارة يوم 20 مارس عند الثالثة بعد الظهر، أي بعد الافتتاح. getTime يحوّل كل لحظة إلى عدد يمكن ترتيبه، فتصير المقارنة true. السطر التالي 20، وهو يوم تلك الزيارة لا جواب المقارنة. === يسأل سؤالاً آخر: هل الاسمان يشيران إلى كائن واحد؟ هنا بنيت كائنين، فهما ليسا شيئاً واحداً ولو تشابهت أرقامهما.

سطر يقرأه من لا يرى الكود

خذ السنة واليوم كما هما. اكتب الشهر كما يعدّه الإنسان على التقويم، لا كما يرقد داخل الكائن.

سطر للقارئ

html
<!DOCTYPE html>
<html>
<head>
<title>dates — page</title>
</head>
<body>
<p id="when">…</p>
<script>
let opened = new Date(2024, 2, 14, 9, 30);
let year = opened.getFullYear();
let displayMonth = opened.getMonth() + 1;
let day = opened.getDate();
let box = document.getElementById("when");
box.textContent = year + "-" + displayMonth + "-" + day;
</script>
</body>
</html>

الفقرة تصبح 2024-3-14. لو رجعت إلى الكائن وسألته عن الشهر لوجدته ما زال 2. الخطوة الزائدة تعيش في الجملة المكتوبة للعين، واللحظة المخزّنة لم تتبدّل.

طابق اللوح مع ما تراه

ستة أشياء يجب أن تنطبق على هذا الصباح.

  1. السنة الكاملة 2024 وليست 24
  2. مارس داخل الكائن رقمه 2
  3. الرابع عشر يأتي من getDate، ورقم الخميس 4 يأتي من getDay
  4. الساعة 9 والدقيقة 30، كل منهما على حدة
  5. زيارة العشرين لاحقة، فالمقارنة true ويومها 20
  6. الجملة المقروءة 2024-3-14 والكائن ما زال يُبقي الشهر عند 2

تشغيل بلا رسالة، وتاريخ غلط

هذه الحالات لا توقف البرنامج، لكنها تغيّر اليوم الذي تظن أنك بنيته.

  • تضع 3 وأنت تقصد مارس، فيُبنى أبريل لأن العدّ من صفر
  • تقرأ 2 على أنها فبراير، أو تصرّ أن getMonth يجب أن يقول 3 لمارس
  • تطلب 14 من getDay
  • تطلب رقم الخميس من getDate
  • تحكم أي اللحظتين أبعد باستخدام ===
  • تنادي new Date() بلا أرقام، فيتغيّر الصباح كلما أعدت تحميل الصفحة

بعد أن تمسح اللوح

  • مارس 2 لأن يناير 0
  • ترتيب اليوم في الشهر من getDate
  • يوم الأسبوع من getDay والأحد 0
  • ترتيب لحظتين يتم بعدد يعطيه getTime
  • الجملة التي يقرأها الإنسان تكتب الشهر متقدماً خطوةً عن المخزَّن، والكائن يبقى على 2
  • الدرس التالي عن الكائن Math

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
8
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى