العمل مع التواريخ والوقت في PHP: المستوى المتقدم

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل المتقدم مع التواريخ والوقت في PHP: من الأساسيات إلى الإتقان



العمل مع التواريخ والوقت — من أكثر المهام شيوعًا وفي نفس الوقت تعقيدًا في تطوير الويب. غالبًا ما يقتصر المطورون المبتدئون على دوال date() و time()، ولكن لإنشاء تطبيقات مرنة وموثوقة حقًا، من الضروري إتقان النهج الكائني التوجه. في هذه المقالة، سنستعرض التقنيات المتقدمة للعمل مع التواريخ والوقت في PHP، والتي ستساعدك على كتابة كود أكثر نظافة وأمانًا وكفاءة.



1. فئة DateTime: أساس العمل الحديث مع التواريخ



فئة DateTime — هي الأساس الذي يُبنى عليه كل العمل المتقدم مع التواريخ في PHP. على عكس الدوال الإجرائية، فهي توفر كائنًا بمجموعة غنية من الطرق للتعامل والمقارنة والتنسيق.



إنشاء كائنات DateTime:

<?php// التاريخ والوقت الحاليين$now = new DateTime();echo $now->format('Y-m-d H:i:s'); // 2024-01-15 14:30:00

// تاريخ محدد من نص$birthday = new DateTime('1990-05-20');echo $birthday->format('d.m.Y'); // 20.05.1990

// بتنسيق نسبي$nextWeek = new DateTime('+1 week');echo $nextWeek->format('Y-m-d');?>


تعديل التواريخ باستخدام طرق modify و add/sub:

<?php$date = new DateTime('2024-01-15');

// استخدام modify للتغييرات المعقدة$date->modify('last day of next month');echo $date->format('Y-m-d'); // 2024-02-29 (سنة كبيسة)

// add و sub مع DateInterval$date->add(new DateInterval('P10D')); // +10 أيام$date->sub(new DateInterval('P1M')); // -1 شهرecho $date->format('Y-m-d'); // 2024-03-10?>


الميزة الرئيسية لـ DateTime — الثبات عند استخدام DateTimeImmutable. إذا كنت لا تريد تعديل الكائن الأصلي، استخدم النسخة غير القابلة للتغيير:

<?php$date = new DateTimeImmutable('2024-01-15');$newDate = $date->modify('+1 month');echo $date->format('Y-m-d'); // 2024-01-15 (التاريخ الأصلي لم يتغير)echo $newDate->format('Y-m-d'); // 2024-02-15?>


2. المناطق الزمنية: عولمة تطبيقك



تجاهل المناطق الزمنية — من أكثر الأخطاء شيوعًا. إذا كان تطبيقك يتعامل مع مستخدمين من مناطق زمنية مختلفة، فإن العمل الصحيح مع المناطق الزمنية يصبح بالغ الأهمية.



تعيين وتغيير المنطقة الزمنية:

<?php// إنشاء كائن بمنطقة زمنية محددة$tokyo = new DateTime('now', new DateTimeZone('Asia/Tokyo'));echo $tokyo->format('Y-m-d H:i:s'); // الوقت في طوكيو

// تغيير المنطقة الزمنية لكائن موجود$london = new DateTime('now', new DateTimeZone('Europe/London'));$london->setTimezone(new DateTimeZone('America/New_York'));echo $london->format('Y-m-d H:i:s T'); // الوقت في نيويورك مع اختصار المنطقة?>


قائمة المناطق الزمنية المتاحة:

<?php$timezones = DateTimeZone::listIdentifiers();// يمكنك التصفية حسب المنطقة، على سبيل المثال:$europe = DateTimeZone::listIdentifiers(DateTimeZone::EUROPE);print_r($europe);?>


نصيحة عملية: قم دائمًا بتخزين التواريخ في قاعدة البيانات بصيغة UTC، وقم بتحويلها إلى المنطقة الزمنية المحلية فقط عند عرضها للمستخدم. هذا سيوفر عليك الصداع عند الانتقال إلى التوقيت الصيفي/الشتوي.



<?php// الحفظ بصيغة UTC$utcDate = new DateTime('now', new DateTimeZone('UTC'));$dbDate = $utcDate->format('Y-m-d H:i:s'); // حفظ في قاعدة البيانات

// العرض للمستخدم$userDate = new DateTime($dbDate, new DateTimeZone('UTC'));$userDate->setTimezone(new DateTimeZone('America/Los_Angeles'));echo $userDate->format('Y-m-d H:i:s');?>


3. التعامل مع الفترات والفواصل الزمنية: DateInterval و DatePeriod

المدونات

توصيات الكتب