التاريخ والوقت
اكتب التاريخ مرةً على اللوح قبل أن تفتح المحرّر: خميس 14 مارس 2024، التاسعة والنصف، قاعة المطالعة تفتح أبوابها. هذا الصباح لا يُستبدل. لو سألت الجهاز عن «الآن» في كل تحديث، ضاع المثال وبدأت تشرح ساعةً تتحرك.
لحظة تركّبها أنت
في المصفوفة كان يكفيك أن تبحث فيصلك رقم خانة أو −1 أو نعم ولا أو الختم نفسه. التاريخ لا يُصاد بهذا الشكل. أنت من يركّب اللحظة، والسؤال الذي تطرحه عليها هو الذي يختار الرقم. سؤال عن السنة لا يحرّك الشهر، وسؤال عن الدقيقة لا يقدّم الساعة.
ستة أرقام معلّقة على هذا الصباح
لا تحفظ أسماء النداءات كقائمة معجم. انظر ماذا يساوي كل واحد في هذا الخميس بالذات، وأين يخلط الطالب الرقم بجارِه.
📊 ورقة اللوح لهذا الخميس
| النداء | ماذا تسأل | رقم هذا الصباح | الخلط الذي يتكرّر |
|---|---|---|---|
getFullYear |
السنة مكتوبة كاملة | 2024 |
تختصرها إلى 24 |
getMonth |
أين يقعد مارس داخل الكائن | 2 |
تحسبه 3 لأنه الثالث في التقويم |
getDate |
ترتيب اليوم في الشهر | 14 |
تأخذه من نداء يوم الأسبوع |
getDay |
الخميس في عدّ الأيام | 4 |
تأخذه من ترتيب اليوم في الشهر |
getHours |
الساعة في يوم من 24 ساعة | 9 |
تبحث عن علامة «صباحاً» |
getMinutes |
الدقائق | 30 |
تطلب الثلاثين من نداء الساعة |
يناير يأخذ 0، فمنه خطوتان إلى مارس فيصير 2. الأحد يأخذ 0، فمنه أربع خطوات إلى الخميس فيصير 4. الصفر الذي رأيته في المصفوفة كان أول خانة. هذان الصفران بداية تقويم، لا عنوان خانة.
ابدأ بالخانة الأولى
الخانة الأولى هي السنة. اترك رقم الشهر، واليوم، والساعة، والدقيقة لأسئلتها. هنا تسأل عن 2024 وحدها، بالشكل الذي كتبته أنت والكائن من غير اختصار.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());
ترى 2024 لأن هذا ما سلّمته في أول موضع. الـ 2 الذي وضعته للشهر لا يظهر في هذا السطر، لكنه منذ البناء يعني مارس لا فبراير. الشكل 24 اختصار بشري لا يصنعه هذا النداء.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());
كثيرون يجمعون 1 ما إن يروا 2. لا تجمعه في هذه القراءة. ما دام يناير صفراً، فـ 2 هو مارس، والقراءة صادقة. الخطوة التي ينقصك على لوحة الحائط تؤجَّل إلى الجملة التي ستُكتب لاحقاً لمن يقرأ الصفحة.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());
14 ترتيب اليوم داخل مارس، و 4 هو الخميس إذا بدأت العدّ من الأحد. ظهورهما متتاليين لا يجعلهما سؤالاً واحداً. من يبدّل النداءين يقرأ تاريخاً ويظنه اسم يوم، أو العكس.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());
الساعة 9 والدقيقة 30، وكل واحدة من نداء. اليوم هنا يُقسم من 0 عند منتصف الليل إلى 23، فالتاسعة صباح بلا حاجة إلى راية منفصلة. من ينتظر 30 من نداء الساعة فقد سأل الساعة عن الدقائق.
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، وهو يوم تلك الزيارة لا جواب المقارنة. === يسأل سؤالاً آخر: هل الاسمان يشيران إلى كائن واحد؟ هنا بنيت كائنين، فهما ليسا شيئاً واحداً ولو تشابهت أرقامهما.
سطر يقرأه من لا يرى الكود
خذ السنة واليوم كما هما. اكتب الشهر كما يعدّه الإنسان على التقويم، لا كما يرقد داخل الكائن.
<!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. الخطوة الزائدة تعيش في الجملة المكتوبة للعين، واللحظة المخزّنة لم تتبدّل.
طابق اللوح مع ما تراه
ستة أشياء يجب أن تنطبق على هذا الصباح.
- السنة الكاملة 2024 وليست 24
- مارس داخل الكائن رقمه 2
- الرابع عشر يأتي من
getDate، ورقم الخميس 4 يأتي منgetDay - الساعة 9 والدقيقة 30، كل منهما على حدة
- زيارة العشرين لاحقة، فالمقارنة true ويومها 20
- الجملة المقروءة
2024-3-14والكائن ما زال يُبقي الشهر عند 2
تشغيل بلا رسالة، وتاريخ غلط
هذه الحالات لا توقف البرنامج، لكنها تغيّر اليوم الذي تظن أنك بنيته.
- تضع 3 وأنت تقصد مارس، فيُبنى أبريل لأن العدّ من صفر
- تقرأ 2 على أنها فبراير، أو تصرّ أن
getMonthيجب أن يقول 3 لمارس - تطلب 14 من
getDay - تطلب رقم الخميس من
getDate - تحكم أي اللحظتين أبعد باستخدام
=== - تنادي
new Date()بلا أرقام، فيتغيّر الصباح كلما أعدت تحميل الصفحة
بعد أن تمسح اللوح
- مارس 2 لأن يناير 0
- ترتيب اليوم في الشهر من
getDate - يوم الأسبوع من
getDayوالأحد 0 - ترتيب لحظتين يتم بعدد يعطيه
getTime - الجملة التي يقرأها الإنسان تكتب الشهر متقدماً خطوةً عن المخزَّن، والكائن يبقى على 2
- الدرس التالي عن الكائن Math
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى