1. الدوال الأساسية:
-
time()
: تُرجع هذه الدالة "الطابع الزمني ليونكس" (Unix timestamp)، وهو عدد الثواني التي انقضت منذ 1 يناير 1970 الساعة 00:00:00 بالتوقيت العالمي المنسق (UTC). يُستخدم هذا الرقم غالبًا لتخزين التواريخ والأوقات في قواعد البيانات.PHP$timestamp = time();echo $timestamp; // مثال: 1678886400 -
date()
: تُستخدم لتنسيق التاريخ والوقت. تأخذ معاملين: الأول هو سلسلة تنسيق تحدد كيفية عرض التاريخ والوقت، والثاني (اختياري) هو الطابع الزمني ليونكس. إذا لم يتم تحديد الطابع الزمني، فسيتم استخدام الوقت الحالي.PHP$date = date("Y-m-d H:i:s"); // تنسيق التاريخ والوقت الحاليecho $date; // مثال: 2024-12-30 19:24:00$date_from_timestamp = date("Y-m-d", 1678886400); // تنسيق تاريخ من طابع زمنيecho $date_from_timestamp; // مثال: 2023-03-15بعض أحرف التنسيق الشائعة في
date()
:Y
: السنة بأربعة أرقام (مثال: 2024)m
: الشهر برقمين (01 إلى 12)d
: اليوم برقمين (01 إلى 31)H
: الساعة بنظام 24 ساعة (00 إلى 23)i
: الدقائق (00 إلى 59)s
: الثواني (00 إلى 59)A
: AM أو PM
-
mktime()
: تُستخدم لإنشاء طابع زمني ليونكس من تاريخ ووقت محددين.PHP$timestamp = mktime(0, 0, 0, 1, 1, 2025); // طابع زمني ليوم 1 يناير 2025echo $timestamp;
2. صنف DateTime
:
يُعتبر صنف DateTime
طريقة أكثر قوة ومرونة للتعامل مع التواريخ والأوقات في PHP.
-
إنشاء كائنات
DateTime
:PHP$date = new DateTime(); // التاريخ والوقت الحاليين$specific_date = new DateTime("2024-12-25 10:30:00"); // تاريخ ووقت محددين$date_from_timestamp = new DateTime("@1678886400"); // تاريخ من طابع زمني -
تنسيق التاريخ والوقت باستخدام
format()
:PHPecho $date->format("Y-m-d H:i:s");
-
تعديل التاريخ والوقت باستخدام
modify()
:PHP$date->modify("+1 day"); // إضافة يوم واحد$date->modify("-1 week"); // طرح أسبوع واحد$date->modify("+2 months"); // إضافة شهرين -
مقارنة التواريخ:
يمكن مقارنة كائنات
DateTime
باستخدام عوامل المقارنة (مثل<
،>
،==
).PHP$date1 = new DateTime("2024-12-31");$date2 = new DateTime("2025-01-01");if ($date1 < $date2) {echo "date1 is before date2";}
3. مناطق الوقت (Time Zones):
من المهم التعامل مع مناطق الوقت بشكل صحيح، خاصةً في التطبيقات التي يتعامل معها مستخدمون من مناطق جغرافية مختلفة.
-
ضبط منطقة الوقت الافتراضية:
يمكن ضبط منطقة الوقت الافتراضية باستخدام الدالة
date_default_timezone_set()
أو في ملفphp.ini
.PHPdate_default_timezone_set("Africa/Tunis");
-
التعامل مع مناطق الوقت في
DateTime
:يمكن تحديد منطقة الوقت عند إنشاء كائن
DateTime
أو تعديلها لاحقًا.PHP$date = new DateTime("now", new DateTimeZone("America/New_York"));$date->setTimezone(new DateTimeZone("Europe/London"));
مثال شامل:
date_default_timezone_set("Africa/Tunis");
$now = new DateTime();echo "الوقت الحالي في تونس: " . $now->format("Y-m-d H:i:s") . "\n";
$birthday = new DateTime("1990-05-15");echo "تاريخ ميلادي: " . $birthday->format("d/m/Y") . "\n";
$future_date = new DateTime("+1 week");echo "بعد أسبوع من الآن: " . $future_date->format("Y-m-d") . "\n";
$date_in_ny = new DateTime("now", new DateTimeZone("America/New_York"));echo "الوقت الحالي في نيويورك: " . $date_in_ny->format("Y-m-d H:i:s") . "\n";
هذا الشرح يغطي الجوانب الأساسية للتعامل مع التاريخ والوقت في PHP. استخدام صنف DateTime
يُفضل عمومًا على الدوال القديمة مثل date()
و mktime()
لقوته ومرونته.