الوقت والتواريخ في JavaScript
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 أكثر من مرة بالخطأ
تمارين للتطبيق
- اطبع تاريخ اليوم بصيغة عربية باستخدام
toLocaleDateString. - اعمل عداد يبدأ من 10 وينقص كل ثانية حتى يصل 0 ثم يتوقف.
- أظهر رسالة في الصفحة لمدة 3 ثواني ثم أخفها باستخدام
setTimeout.
ماذا بعد هذا الدرس؟
الدرس القادم: Try/Catch ومعالجة الأخطاء
سنتعلم كيف تمنع التطبيق من الانهيار عند حدوث خطأ وكيف تعرض رسالة مفهومة للمستخدم.