۱۰

کار با تاریخ و زمان 🗓️⏰

یاد می‌گیریم چطوری با زمان کار کنیم و تایمرهای خفن بسازیم.

آبجکت `Date`: ماشین زمان جاوااسکریپت!

جاوااسکریپت یه آبجکت داخلی به اسم `Date` داره که برای کار با تاریخ و زمان ساخته شده. باهاش می‌تونیم تاریخ و ساعت فعلی رو بگیریم، تاریخ‌های مختلف رو بسازیم و محاسبات زمانی انجام بدیم.

// گرفتن تاریخ و ساعت فعلی
const now = new Date();
console.log(now);

// گرفتن بخش‌های مختلف تاریخ
const year = now.getFullYear(); // سال
const month = now.getMonth(); // ماه (از ۰ شروع می‌شه!)
const day = now.getDate(); // روز
const hours = now.getHours(); // ساعت

console.log(`امروز: ${year}/${month + 1}/${day}`);

// ساختن یه تاریخ خاص
const myBirthday = new Date('1998-08-23');
console.log(myBirthday.toLocaleDateString('fa-IR')); // نمایش به فرمت فارسی

تایمرها: `setTimeout` و `setInterval`

با تایمرها می‌تونیم اجرای کدها رو به تأخیر بندازیم یا به صورت دوره‌ای تکرارشون کنیم.

  • `setTimeout(callback, delay)`: یه تابع رو فقط یک بار بعد از گذشت مدت زمان مشخص (به میلی‌ثانیه) اجرا می‌کنه.
  • `setInterval(callback, delay)`: یه تابع رو به صورت تکراری هر چند میلی‌ثانیه یک بار اجرا می‌کنه.
// اجرای کد بعد از ۳ ثانیه
setTimeout(() => {
  console.log("این پیام بعد از ۳ ثانیه اومد!");
}, 3000);

// اجرای کد هر ۱ ثانیه
let count = 0;
const myInterval = setInterval(() => {
  count++;
  console.log(`تیک تاک ساعت: ${count}`);
  if (count >= 5) {
    clearInterval(myInterval); // متوقف کردن اینتروال
    console.log("تایمر متوقف شد!");
  }
}, 1000);

تمرین! 🧠

یه ساعت دیجیتال ساده بساز! یه تگ `h2` تو HTML بذار و با استفاده از `setInterval`، هر ثانیه یک بار، ساعت فعلی رو داخلش نمایش بده. (راهنمایی: از متد `toLocaleTimeString()` روی آبجکت `Date` استفاده کن).

جواب تمرین

<!-- HTML -->
<h2 id="clock"></h2>

<!-- JavaScript -->
<script>
  const clockElement = document.getElementById('clock');

  setInterval(() => {
    const now = new Date();
    clockElement.innerText = now.toLocaleTimeString('fa-IR');
  }, 1000);
</script>