مقدمة: لماذا يجب أن تتقن العمل مع التواريخ والوقت في PHP
يُعد العمل مع التواريخ والوقت من المهام الأساسية في تطوير الويب. سواء كان الأمر يتعلق بتسجيل إجراءات المستخدم، أو حساب العمر، أو إنشاء التقاويم، أو معالجة الطوابع الزمنية من قاعدة البيانات، أو إدارة تواريخ الاشتراكات — لا يمكنك الاستغناء عن أدوات موثوقة للعمل مع التواريخ. توفر PHP للمطورين مجموعة قوية ومرنة من الدوال والفئات لهذه الأغراض.
في هذه المقالة، سنقوم بتحليل شامل للطرق الرئيسية للعمل مع التواريخ والوقت في PHP: بدءًا من الدوال البسيطة date() و time() وصولاً إلى النهج الكائني باستخدام الفئة DateTime. ستتعلم كيفية تنسيق التواريخ، وحساب الفرق بينها، والعمل مع المناطق الزمنية، وتجنب الأخطاء الشائعة.
الدوال الأساسية: date() و time() و mktime()
أبسط طريقة للحصول على التاريخ أو الوقت الحالي في PHP هي استخدام الدالة date(). تأخذ هذه الدالة سلسلة تنسيق وطابعًا زمنيًا اختياريًا (timestamp). إذا لم يتم تمرير طابع زمني، يتم استخدام الوقت الحالي.
<?php// التاريخ الحالي بتنسيق "سنة-شهر-يوم"echo date('Y-m-d'); // الإخراج: 2025-04-10
// الوقت الحالي بتنسيق "ساعات:دقائق:ثوان"echo date('H:i:s'); // الإخراج: 14:35:20
// التاريخ والوقت الكاملينecho date('Y-m-d H:i:s'); // الإخراج: 2025-04-10 14:35:20?>الدالة time()
تقوم time() بإرجاع الطابع الزمني الحالي لنظام Unix (عدد الثواني المنقضية منذ 1 يناير 1970). هذا مفيد للحسابات والمقارنات.
<?php$now = time();echo $now; // الإخراج: 1744277720 (الرقم يتغير كل ثانية)
// التاريخ بعد 7 أيام$nextWeek = time() + (7 * 24 * 60 * 60);echo date('Y-m-d', $nextWeek); // الإخراج: 2025-04-17?>الدالة mktime()
تسمح mktime() بإنشاء طابع زمني لتاريخ ووقت محددين. هذا مفيد عندما تحتاج إلى الحصول على timestamp لمعايير معينة.
<?php// إنشاء طابع زمني ليوم 25 ديسمبر 2025، الساعة 10:00:00$christmas = mktime(10, 0, 0, 12, 25, 2025);echo date('Y-m-d H:i:s', $christmas); // الإخراج: 2025-12-25 10:00:00?>تنسيق التواريخ: الرموز الأساسية
في الجدول أدناه، الرموز الأكثر استخدامًا لتنسيق الدالة date():
- d — يوم الشهر (01–31)
- m — رقم الشهر (01–12)
- Y — السنة بتنسيق مكون من 4 أرقام (2025)
- H — الساعات بتنسيق 24 ساعة (00–23)
- i — الدقائق (00–59)
- s — الثواني (00–59)
- l — الاسم الكامل ليوم الأسبوع (Monday)
- F — الاسم الكامل للشهر (April)
النهج الكائني: الفئة DateTime
بدءًا من PHP 5.2، يُوصى باستخدام الفئة DateTime للعمل مع التواريخ. توفر إمكانيات أكثر بكثير وواجهة سهلة الاستخدام.
إنشاء كائن DateTime
<?php// التاريخ والوقت الحاليان$date = new DateTime();echo $date->format('Y-m-d H:i:s'); // الإخراج: 2025-04-10 14:35:20
// تاريخ محدد$birthday = new DateTime('1990-07-15');echo $birthday->format('d.m.Y'); // الإخراج: 15.07.1990
// بتنسيق نسبي$nextMonth = new DateTime('+1 month');echo $nextMonth->format('Y-m-d'); // الإخراج: 2025-05-10?>تعديل التواريخ
تسمح طريقة modify() بتغيير التاريخ بسهولة باستخدام سلاسل نسبية.
<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('Y-m-d'); // الإخراج: 2025-04-20
$date->modify('first day of next month');echo $date->format('Y-m-d'); // الإخراج: 2025-05-01?>