تاریخ و زمان
روی تقویم دیواری مارس سومین ماه است، برای همین دست خیلیها میرود سراغ عدد ۳. موتور از ژانویه و از صفر میشمارد و مارس را ۲ نگه میدارد. تا این اختلاف را روی هوا نخوانی، یک صبح را میخکوب میکنیم: سالن مطالعه پنجشنبه ۱۴ مارس ۲۰۲۴ ساعت نه و نیم باز شده و تا آخر جلسه همان جا میماند.
ساعت را میخوانی، لیست را نه
جواب جلسهٔ قبل، وقتی چیزی را در آرایه پیدا میکردی، یا شمارهٔ خانه بود یا منفی یک یا بله و خیر یا خودِ مهر. تاریخ را آنطور از لیست درنمیآوری. لحظه را خودت میسازی و بعد فقط همان تکهای را میپرسی که لازم داری. پرسیدن، لحظه را جلو نمیبرد.
این صبح را با شش عدد بشناس
متدها را مثل تعریف فرهنگ حفظ نکن. برای همین یک صبح، هر سؤال کدام عدد را دارد و کجا معمولاً با عدد بغلی عوض میشود. برگه را کنار تخته فرض کن.
📊 برگهٔ کنار تخته برای همین صبح
| متد | سؤال تو | عدد این صبح | جایی که دست میلغزد |
|---|---|---|---|
getFullYear |
سال را کامل میخواهی | 2024 |
سال را ۲۴ مینویسی |
getMonth |
موتور ماه را چند گذاشته | 2 |
مارس را ۳ میگیری |
getDate |
چندمِ ماه است | 14 |
با شمارهٔ پنجشنبه عوض میشود |
getDay |
چندشنبه است | 4 |
با چهاردهم عوض میشود |
getHours |
ساعت شبانهروز چند است | 9 |
دنبال علامت قبل از ظهر میگردی |
getMinutes |
دقیقه چند است | 30 |
۳۰ را از خودِ ساعت میخواهی |
از ژانویه که صفر است دو گام برو جلو: فوریه یک، مارس دو. از یکشنبه که صفر است چهار گام: دوشنبه، سهشنبه، چهارشنبه، و پنجشنبه میشود چهار. صفرِ جلسهٔ آرایه شمارهٔ خانه بود. این صفرها ابتدای تقویماند، نه خانهٔ لیست.
اول سال را جدا کن
پنج عدد میرود داخل سازنده. سال را همان اول جدا کن، قبل از اینکه شمارهٔ ماه حواست را پرت کند. هم تو ۲۰۲۴ میگویی هم شیء.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getFullYear());
آنچه میبینی ۲۰۲۴ است، همان چهار رقمی که به سازنده دادی. عدد ۲ را هم همان موقع بهعنوان ماه دادی. این خط آن را چاپ نمیکند، ولی از لحظهٔ ساخته شدن یعنی مارس. ۲۴ شکل کوتاه سال است و از این متد درنمیآید.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getMonth());
این بار خودِ ۲ میآید و شیء مارس را عوض نکرده. سوم بودن مارس مال تقویم دیواری است. آن یک شماره را وقتی جلو میبری که بخواهی یک نفر متن را مثل تقویم بخواند. خودِ getMonth را با جمع کردن «اصلاح» نکن. دارد همان ۲ ذخیرهشده را میگوید.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getDate());
console.log(opened.getDay());
۱۴ یعنی چهاردهمِ ماه و ۴ یعنی پنجشنبه. پشتسرهم آمدنشان فقط به این خاطر است که هر دو را خواستی، نه به این خاطر که یک سؤالاند. جایشان را که عوض بخوانی، یا تاریخ را روز هفته گرفتهای یا روز هفته را تاریخ.
let opened = new Date(2024, 2, 14, 9, 30);
console.log(opened.getHours());
console.log(opened.getMinutes());
اول ۹ میآید و بعد ۳۰. ساعت از نیمهشب با صفر شروع میشود و تا ۲۳ میرود، پس ۹ صبح است و برچسب جدا برای قبل از ظهر نمیخواهد. اگر ۳۰ را از متد ساعت بخواهی، دقیقه را از جای غلط پرسیدهای.
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());
getTime هر لحظه را به یک عدد تبدیل میکند تا بشود گفت کدام جلوتر است. بازدید بیستم مارس ساعت سه بعدازظهر از افتتاح چهاردهم دیرتر است، پس مقایسه true میشود. خط بعدی ۲۰ است، روز همان بازدید. === دربارهٔ دیر و زود حرف نمیزند. فقط میگوید این دو اسم به یک شیء چسبیدهاند یا به دو شیء. اینجا دو شیء جدا ساختهای.
جملهای که آدم روی صفحه میخواند
سال و روز را همانطور که هستند بردار. ماه را آنطور بنویس که روی تقویم سوم است، نه آنطور که داخل شیء دوم است.
<!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 را نشان میدهد. اگر دوباره از خودِ شیء ماه را بپرسی، هنوز ۲ است. این اختلاف مال جملهای است که برای چشم آدم ساختهای. ذخیرهٔ تاریخ تکان نخورده.
خودت این صبح را بسنج
عددها باید با همین تصویر یکی باشند.
- سال چهاررقمی ۲۰۲۴ است، نه ۲۴
- ماه داخل شیء ۲ است
- چهاردهم از
getDateمیآید و شمارهٔ پنجشنبه، که ۴ است، ازgetDay - ساعت ۹ است و دقیقه ۳۰، و این دو را جدا میبینی
- بازدید بیستم دیرتر است، مقایسه true میشود، و روز آن بازدید ۲۰ است
- نوشتهٔ پاراگراف
2024-3-14است و شیء ماه را هنوز ۲ نگه داشته
اینها خطا نمیدهند، تاریخ را غلط میکنند
کد اجرا میشود و تقویم دروغ میگوید.
- برای مارس به سازنده ۳ بدهی. از صفر که بشماری، ۳ آوریل است
- ۲ را فوریه حساب کنی، یا از
getMonthبرای مارس عدد ۳ بخواهی - ۱۴ را از
getDayبگیری - شمارهٔ پنجشنبه را از
getDateبگیری - دیرتر بودن را با
===بسنجی new Date()را بدون هیچ عددی صدا بزنی، تا با هر تازه کردن صفحه صبح دیگری بیاید
این تصویر بماند
- مارس ۲ است چون ژانویه ۰ است
- چندمِ ماه کار
getDateاست - چندشنبه کار
getDayاست و یکشنبه ۰ است - جلوتر بودن دو لحظه را با عددی میسنجی که
getTimeمیدهد - جملهای که آدم میخواند ماه را یک شماره جلوتر از ذخیرهٔ شیء نشان میدهد و خودِ شیء دست نمیخورد
- جلسهٔ بعد شیء Math است
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود