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

5:00 دقائق مجاني
في هذا الدرس ستتعلم كيف تتعامل مع الوقت والتواريخ، وكيف تنفذ أكواد بعد مدة أو بشكل متكرر

JavaScript تقدر تتعامل مع الوقت والتاريخ (اليوم، الشهر، الساعة…) عبر كائن اسمه Date. وتقدر أيضًا:

  • تشغل كود بعد مدة معينة باستخدام setTimeout
  • تشغل كود بشكل متكرر كل فترة باستخدام setInterval

إنشاء تاريخ باستخدام Date


let now = new Date();
console.log(now);

هذا يعطيك تاريخ ووقت اللحظة الحالية.

ملاحظة: Date يعتمد على وقت جهاز المستخدم (وليس السيرفر).

قراءة أجزاء التاريخ (سنة/شهر/يوم/ساعة)


let d = new Date();

let year  = d.getFullYear();
let month = d.getMonth();     // من 0 إلى 11
let day   = d.getDate();      // يوم الشهر 1..31

let hours = d.getHours();
let mins  = d.getMinutes();
let secs  = d.getSeconds();

console.log(year, month, day, hours, mins, secs);

تنبيه مهم

getMonth() يبدأ من 0 (يناير = 0). لذلك إذا أردت عرض الشهر للمستخدم: استخدم month + 1.

تنسيق التاريخ بشكل جميل للمستخدم

أحيانًا تريد تنسيق سريع بدون تعقيد. أفضل طريقة للمبتدئ:


let now = new Date();

let dateText = now.toLocaleDateString("ar-SA");
let timeText = now.toLocaleTimeString("ar-SA");

console.log(dateText, timeText);

toLocaleDateString و toLocaleTimeString تعطيك تنسيق مناسب حسب اللغة/البلد.

مقارنة التواريخ (من الأحدث؟)

JavaScript تقارن التواريخ غالبًا عبر الوقت بالمللي ثانية.


let a = new Date("2025-01-01");
let b = new Date("2025-12-31");

if (b > a) {
  console.log("b أحدث من a");
}

يمكن أيضًا استخدام:


let ms = Date.now(); // الوقت الحالي بالمللي ثانية
console.log(ms);

setTimeout (تشغيل كود بعد مدة)

تشغّل كود مرة واحدة بعد عدد من المللي ثانية (1000ms = ثانية).


setTimeout(function () {
  console.log("هذا ظهر بعد 3 ثواني");
}, 3000);

تستخدمها في: رسائل مؤقتة، Loading، انتقالات، إخفاء تنبيه بعد وقت.

إلغاء setTimeout (clearTimeout)


let timerId = setTimeout(function () {
  console.log("لن أظهر إذا ألغيتني");
}, 5000);

// إلغاء قبل التنفيذ
clearTimeout(timerId);

إذا ألغيت الـ timer قبل انتهاء المدة، لن يعمل الكود.

setInterval (تشغيل كود بشكل متكرر)

تشغل كود كل فترة بشكل متكرر.


setInterval(function () {
  console.log("تكرار كل ثانية");
}, 1000);

مفيد لساعة حية، عداد، تحديث بيانات، إلخ.

إيقاف setInterval (clearInterval)


let count = 0;

let intervalId = setInterval(function () {
  count++;
  console.log("العداد:", count);

  if (count === 5) {
    clearInterval(intervalId);
    console.log("تم الإيقاف ✅");
  }
}, 1000);

هنا سيطبع 1 إلى 5 ثم يتوقف.

مثال واقعي: ساعة حية في الصفحة

HTML:


00:00:00

JavaScript:


document.addEventListener("DOMContentLoaded", function () {
  const clock = document.getElementById("clock");

  function updateClock() {
    const now = new Date();
    clock.textContent = now.toLocaleTimeString("ar-SA");
  }

  updateClock(); // تحديث فوري
  setInterval(updateClock, 1000);
});

الفكرة: نحدّث الوقت كل ثانية.

أخطاء شائعة (انتبه!)

  • نسيان أن getMonth() يبدأ من 0
  • استخدام setInterval بدون إيقافه عند الحاجة (يسبب حمل زائد)
  • كتابة مدة بالثواني بدل المللي ثانية (لازم *1000)
  • تكرار إنشاء interval أكثر من مرة بالخطأ

تمارين للتطبيق

  1. اطبع تاريخ اليوم بصيغة عربية باستخدام toLocaleDateString.
  2. اعمل عداد يبدأ من 10 وينقص كل ثانية حتى يصل 0 ثم يتوقف.
  3. أظهر رسالة في الصفحة لمدة 3 ثواني ثم أخفها باستخدام setTimeout.

ماذا بعد هذا الدرس؟

الدرس القادم: Try/Catch ومعالجة الأخطاء

سنتعلم كيف تمنع التطبيق من الانهيار عند حدوث خطأ وكيف تعرض رسالة مفهومة للمستخدم.