العمل مع التواريخ في PHP: نظرة عامة على مكتبات معالجة الوقت

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

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

ابدأ الدورة

العمل مع التواريخ في PHP: نظرة عامة على المكتبات والأدوات

العمل مع التواريخ والوقت هو أحد المهام الأساسية في تطوير الويب. في PHP، توجد الفئة المدمجة DateTime، ولكن للعمليات المعقدة (المناطق الزمنية، الفواصل الزمنية، التنسيق، التوطين) غالبًا ما تُستخدم مكتبات متخصصة. في هذه المقالة، سنستعرض ثلاث أدوات شائعة: Carbon، Chronos، و DateTime المحسّن، مع أمثلة على الكود وتوصيات.



1. الفئة المدمجة DateTime

توفر PHP وظائف أساسية من خلال الفئات DateTime، DateTimeImmutable، DateInterval، و DatePeriod. هذا يكفي للمهام البسيطة.



<?php// إنشاء كائن تاريخ$date = new DateTime('2025-04-15 14:30:00', new DateTimeZone('Europe/Moscow'));echo $date->format('Y-m-d H:i:s'); // 2025-04-15 14:30:00

// تعديل التاريخ$date->modify('+1 day');echo $date->format('d.m.Y'); // 16.04.2025

// الفرق بين التواريخ$now = new DateTime();$interval = $now->diff($date);echo $interval->days; // عدد الأيام?>


المزايا: مدمجة في PHP، لا تتطلب تثبيتًا. العيوب: بناء جملة ضخم، لا توجد سلاسل طرق (fluent interface)، صعوبة في التعامل مع التوطين.



2. Carbon - الموسع الأكثر شيوعًا لـ DateTime

Carbon هي مكتبة توسع DateTime. تضيف طرقًا ملائمة للعمل مع التواريخ، الفواصل الزمنية، المناطق الزمنية، والتوطين. التثبيت عبر Composer:



composer require nesbot/carbon


أمثلة على استخدام Carbon:



<?phpuse Carbon\\Carbon;

// التاريخ الحالي$now = Carbon::now();echo $now->toDateString(); // 2025-04-15

// إنشاء تاريخ$date = Carbon::create(2025, 12, 25, 10, 30, 0, 'Europe/Moscow');echo $date->format('d.m.Y H:i'); // 25.12.2025 10:30

// الفرق بتنسيق قابل للقراءة البشريةecho Carbon::now()->subDays(5)->diffForHumans(); // "منذ 5 أيام"

// سلاسل الطرق$future = Carbon::now()->addWeek()->startOfDay();echo $future->toDateTimeString(); // 2025-04-22 00:00:00

// التوطينCarbon::setLocale('ar');echo Carbon::now()->translatedFormat('l j F Y'); // "الثلاثاء 15 أبريل 2025"?>


يدعم Carbon كل شيء تقريبًا: التلاعب (addDays()، subMonths())، المقارنات (isWeekend()، between())، التنسيق مع التوطين، والعمل مع الفواصل والفترات الزمنية. إنه المعيار الفعلي لـ Laravel والعديد من المشاريع.



3. Chronos - بديل خفيف الوزن من CakePHP

Chronos هي مكتبة من فريق CakePHP، توسع أيضًا DateTime. إنها أخف من Carbon، ولكنها توفر وظائف مماثلة. التثبيت:



composer require cakephp/chronos


أمثلة:



<?phpuse Cake\\Chronos\\Chronos;

// الإنشاء والتلاعب$date = Chronos::now();$modified = $date->addDays(3)->subHours(2);echo $modified->toIso8601String(); // 2025-04-18T12:30:00+03:00

// الفرق مع إخراج قابل للقراءة البشرية$past = Chronos::parse('2025-04-10');echo $past->diffForHumans(); // "منذ 5 أيام"?>


يدعم Chronos الإصدارات القابلة للتغيير وغير القابلة للتغيير (Chronos و ChronosImmutable). يتميز بالكتابة الصارمة وحجم أصغر. مناسب إذا لم تكن جميع وظائف Carbon مطلوبة.



4. مقارنة المكتبات

  • DateTime (مدمج) - وظائف أساسية، لا تبعيات، مناسب للنصوص البسيطة.
  • Carbon - واجهة برمجة تطبيقات غنية، توطين، مثالي لـ Laravel والمشاريع المعقدة.
  • Chronos - خفيف الوزن، كائنات غير قابلة للتغيير، جيد لـ CakePHP أو التطبيقات ذات القيود على الحجم.


5. متى تستخدم أي مكتبة

توصيات