در حال بارگذاری...

تاریخ و زمان

روی تقویم دیواری مارس سومین ماه است، برای همین دست خیلی‌ها می‌رود سراغ عدد ۳. موتور از ژانویه و از صفر می‌شمارد و مارس را ۲ نگه می‌دارد. تا این اختلاف را روی هوا نخوانی، یک صبح را میخکوب می‌کنیم: سالن مطالعه پنجشنبه ۱۴ مارس ۲۰۲۴ ساعت نه و نیم باز شده و تا آخر جلسه همان جا می‌ماند.

ساعت را می‌خوانی، لیست را نه

جواب جلسهٔ قبل، وقتی چیزی را در آرایه پیدا می‌کردی، یا شمارهٔ خانه بود یا منفی یک یا بله و خیر یا خودِ مهر. تاریخ را آن‌طور از لیست درنمی‌آوری. لحظه را خودت می‌سازی و بعد فقط همان تکه‌ای را می‌پرسی که لازم داری. پرسیدن، لحظه را جلو نمی‌برد.

این صبح را با شش عدد بشناس

متدها را مثل تعریف فرهنگ حفظ نکن. برای همین یک صبح، هر سؤال کدام عدد را دارد و کجا معمولاً با عدد بغلی عوض می‌شود. برگه را کنار تخته فرض کن.

📊 برگهٔ کنار تخته برای همین صبح

متد سؤال تو عدد این صبح جایی که دست می‌لغزد
getFullYear سال را کامل می‌خواهی 2024 سال را ۲۴ می‌نویسی
getMonth موتور ماه را چند گذاشته 2 مارس را ۳ می‌گیری
getDate چندمِ ماه است 14 با شمارهٔ پنجشنبه عوض می‌شود
getDay چندشنبه است 4 با چهاردهم عوض می‌شود
getHours ساعت شبانه‌روز چند است 9 دنبال علامت قبل از ظهر می‌گردی
getMinutes دقیقه چند است 30 ۳۰ را از خودِ ساعت می‌خواهی

از ژانویه که صفر است دو گام برو جلو: فوریه یک، مارس دو. از یکشنبه که صفر است چهار گام: دوشنبه، سه‌شنبه، چهارشنبه، و پنجشنبه می‌شود چهار. صفرِ جلسهٔ آرایه شمارهٔ خانه بود. این صفرها ابتدای تقویم‌اند، نه خانهٔ لیست.

اول سال را جدا کن

پنج عدد می‌رود داخل سازنده. سال را همان اول جدا کن، قبل از اینکه شمارهٔ ماه حواست را پرت کند. هم تو ۲۰۲۴ می‌گویی هم شیء.

سال افتتاح

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

آنچه می‌بینی ۲۰۲۴ است، همان چهار رقمی که به سازنده دادی. عدد ۲ را هم همان موقع به‌عنوان ماه دادی. این خط آن را چاپ نمی‌کند، ولی از لحظهٔ ساخته شدن یعنی مارس. ۲۴ شکل کوتاه سال است و از این متد درنمی‌آید.

شمارهٔ ماه داخل شیء

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

این بار خودِ ۲ می‌آید و شیء مارس را عوض نکرده. سوم بودن مارس مال تقویم دیواری است. آن یک شماره را وقتی جلو می‌بری که بخواهی یک نفر متن را مثل تقویم بخواند. خودِ getMonth را با جمع کردن «اصلاح» نکن. دارد همان ۲ ذخیره‌شده را می‌گوید.

چهاردهم کنار پنجشنبه

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

۱۴ یعنی چهاردهمِ ماه و ۴ یعنی پنجشنبه. پشت‌سرهم آمدنشان فقط به این خاطر است که هر دو را خواستی، نه به این خاطر که یک سؤال‌اند. جایشان را که عوض بخوانی، یا تاریخ را روز هفته گرفته‌ای یا روز هفته را تاریخ.

نه و سی

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

اول ۹ می‌آید و بعد ۳۰. ساعت از نیمه‌شب با صفر شروع می‌شود و تا ۲۳ می‌رود، پس ۹ صبح است و برچسب جدا برای قبل از ظهر نمی‌خواهد. اگر ۳۰ را از متد ساعت بخواهی، دقیقه را از جای غلط پرسیده‌ای.

بازدید بیستم

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());

getTime هر لحظه را به یک عدد تبدیل می‌کند تا بشود گفت کدام جلوتر است. بازدید بیستم مارس ساعت سه بعدازظهر از افتتاح چهاردهم دیرتر است، پس مقایسه true می‌شود. خط بعدی ۲۰ است، روز همان بازدید. === دربارهٔ دیر و زود حرف نمی‌زند. فقط می‌گوید این دو اسم به یک شیء چسبیده‌اند یا به دو شیء. اینجا دو شیء جدا ساخته‌ای.

جمله‌ای که آدم روی صفحه می‌خواند

سال و روز را همان‌طور که هستند بردار. ماه را آن‌طور بنویس که روی تقویم سوم است، نه آن‌طور که داخل شیء دوم است.

خط تقویم برای خواننده

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 را نشان می‌دهد. اگر دوباره از خودِ شیء ماه را بپرسی، هنوز ۲ است. این اختلاف مال جمله‌ای است که برای چشم آدم ساخته‌ای. ذخیرهٔ تاریخ تکان نخورده.

خودت این صبح را بسنج

عددها باید با همین تصویر یکی باشند.

  1. سال چهاررقمی ۲۰۲۴ است، نه ۲۴
  2. ماه داخل شیء ۲ است
  3. چهاردهم از getDate می‌آید و شمارهٔ پنجشنبه، که ۴ است، از getDay
  4. ساعت ۹ است و دقیقه ۳۰، و این دو را جدا می‌بینی
  5. بازدید بیستم دیرتر است، مقایسه true می‌شود، و روز آن بازدید ۲۰ است
  6. نوشتهٔ پاراگراف 2024-3-14 است و شیء ماه را هنوز ۲ نگه داشته

این‌ها خطا نمی‌دهند، تاریخ را غلط می‌کنند

کد اجرا می‌شود و تقویم دروغ می‌گوید.

  • برای مارس به سازنده ۳ بدهی. از صفر که بشماری، ۳ آوریل است
  • ۲ را فوریه حساب کنی، یا از getMonth برای مارس عدد ۳ بخواهی
  • ۱۴ را از getDay بگیری
  • شمارهٔ پنجشنبه را از getDate بگیری
  • دیرتر بودن را با === بسنجی
  • new Date() را بدون هیچ عددی صدا بزنی، تا با هر تازه کردن صفحه صبح دیگری بیاید

این تصویر بماند

  • مارس ۲ است چون ژانویه ۰ است
  • چندمِ ماه کار getDate است
  • چندشنبه کار getDay است و یکشنبه ۰ است
  • جلوتر بودن دو لحظه را با عددی می‌سنجی که getTime می‌دهد
  • جمله‌ای که آدم می‌خواند ماه را یک شماره جلوتر از ذخیرهٔ شیء نشان می‌دهد و خودِ شیء دست نمی‌خورد
  • جلسهٔ بعد شیء Math است

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود