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


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

أهلاً بك! بما أنك تعمل مع قواعد البيانات، أكيد بتعرف أهمية التعامل مع التاريخ والوقت. في JavaScript، الموضوع بسيط ومباشر باستخدام كائن Date. خلينا نشوف كيف.

إنشاء كائنات التاريخ (Date Objects)

لإنشاء كائن تاريخ، بنستخدم الدالة البانية new Date():

1. التاريخ والوقت الحالي:

بكل بساطة، عشان تجيب التاريخ والوقت الحالي لجهاز المستخدم:

let now = new Date();
    console.log(now); // مثل: Tue Oct 26 2023 10:30:00 GMT+0300 (Eastern European Summer Time)

2. تاريخ ووقت محدد:

تقدر تحدد تاريخ ووقت معين. فيه كذا طريقة:

  • بصيغة String (ISO 8601):

    let specificDate = new Date("2023-10-26T14:30:00Z"); // تاريخ ووقت بتوقيت UTC
                console.log(specificDate);
  • بصيغة أرقام (سنة، شهر، يوم، ساعة، دقيقة، ثانية، ملي ثانية):

    انتبه، الشهر بيبدأ من 0 (يناير = 0، فبراير = 1... ديسمبر = 11).

    // سنة, شهر (0-11), يوم, ساعة, دقيقة, ثانية, ملي ثانية
                let myBirthday = new Date(1990, 4, 15, 12, 0, 0, 0); // 15 مايو 1990، الساعة 12 ظهراً
                console.log(myBirthday);

    ملاحظة: لو ما حددت الوقت، بيكون الساعة 00:00:00. لو ما حددت اليوم، بيكون اليوم الأول من الشهر.

  • بصيغة Timestamp (عدد الملي ثواني من 1 يناير 1970 UTC):

    let epochDate = new Date(0); // 1 يناير 1970 UTC
                console.log(epochDate);
                let futureDate = new Date(1678886400000); // تاريخ محدد بالملي ثانية
                console.log(futureDate);

الحصول على مكونات التاريخ والوقت

بعد ما أنشأت كائن Date، تقدر تستخرج منه أي جزء تحتاجه:

let d = new Date(); // لنفترض الآن 26 أكتوبر 2023، الساعة 10:30:45

    console.log(d.getFullYear());     // السنة (مثلاً: 2023)
    console.log(d.getMonth());        // الشهر (0-11) (مثلاً: 9 لأكتوبر)
    console.log(d.getDate());         // اليوم من الشهر (1-31) (مثلاً: 26)
    console.log(d.getDay());          // اليوم من الأسبوع (0-6) (0 للأحد، 6 للسبت)
    console.log(d.getHours());        // الساعة (0-23) (مثلاً: 10)
    console.log(d.getMinutes());      // الدقائق (0-59) (مثلاً: 30)
    console.log(d.getSeconds());      // الثواني (0-59) (مثلاً: 45)
    console.log(d.getMilliseconds()); // الملي ثواني (0-999)
    console.log(d.getTime());         // عدد الملي ثواني من 1 يناير 1970 UTC (timestamp)

نصيحة: فيه دوال مشابهة بتبدأ بـ getUTC... عشان تحصل على المكونات بتوقيت UTC بدل التوقيت المحلي للمستخدم.

تعديل مكونات التاريخ والوقت

نفس الشيء، تقدر تعدل على أي جزء من التاريخ أو الوقت باستخدام دوال set...:

let d = new Date(); // التاريخ الحالي

    d.setFullYear(2025);
    d.setMonth(0);    // يناير
    d.setDate(1);     // اليوم الأول
    d.setHours(9);    // الساعة 9 صباحاً
    d.setMinutes(0);
    d.setSeconds(0);
    d.setMilliseconds(0);

    console.log(d); // 1 يناير 2025 الساعة 9 صباحاً

تنسيق عرض التاريخ والوقت

كائن Date بيوفر لك طرق حلوة لعرض التاريخ والوقت بأشكال مختلفة:

let d = new Date(); // التاريخ الحالي

    console.log(d.toString());           // نفس الإخراج الافتراضي (مثلاً: Tue Oct 26 2023 10:30:00 GMT+0300)
    console.log(d.toDateString());       // التاريخ فقط (مثلاً: Tue Oct 26 2023)
    console.log(d.toTimeString());       // الوقت فقط (مثلاً: 10:30:00 GMT+0300 (Eastern European Summer Time))
    console.log(d.toISOString());        // تنسيق ISO 8601 (مثلاً: 2023-10-26T07:30:00.000Z)
    console.log(d.toLocaleString());     // تنسيق محلي حسب لغة المتصفح (مثلاً: 26/10/2023, 10:30:00 ص)
    console.log(d.toLocaleDateString()); // تنسيق تاريخ محلي فقط (مثلاً: 26/10/2023)
    console.log(d.toLocaleTimeString()); // تنسيق وقت محلي فقط (مثلاً: 10:30:00 ص)

    // تقدر تحدد اللغة والخيارات لـ toLocaleString
    console.log(d.toLocaleString('ar-EG', {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour: '2-digit',
        minute: '2-digit'
    })); // مثال: ٢٦ أكتوبر ٢٠٢٣، ١٠:٣٠ ص

العمليات الحسابية على التاريخ

تقدر تضيف أو تطرح أيام، شهور، أو سنوات بسهولة عن طريق تعديل المكونات:

let today = new Date();
    console.log("اليوم:", today.toLocaleDateString());

    // إضافة 7 أيام
    today.setDate(today.getDate() + 7);
    console.log("بعد 7 أيام:", today.toLocaleDateString());

    // طرح شهرين
    today.setMonth(today.getMonth() - 2);
    console.log("قبل شهرين:", today.toLocaleDateString());

الخلاصة

كائن Date في JavaScript قوي ومرن جداً للتعامل مع التاريخ والوقت. بيوفر لك كل الأدوات الأساسية اللي تحتاجها عشان تنشئ، تستخرج، تعدل، وتنسق بيانات التاريخ والوقت. لو بتحتاج عمليات معقدة أكثر (مثل التعامل مع المناطق الزمنية بشكل مكثف أو تحليل تواريخ مختلفة)، ممكن تحتاج مكتبات خارجية زي Moment.js (بس صار قديم) أو الأفضل date-fns أو Luxon.

أتمنى يكون الدرس مفيد ومباشر!