تاريخ ووقت PHP الحالي: دليل شامل 2025

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

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

ابدأ الدورة

كيفية الحصول على التاريخ والوقت الحالي في PHP: أفضل الممارسات لعام 2025

\n\n

كل مطور PHP، من المبتدئ إلى الخبير، تساءل مرة على الأقل: "كيف أحصل على التاريخ والوقت الحالي في PHP؟". هذا السؤال حصد آلاف المشاهدات على Stack Overflow ولا يزال ذا أهمية. في عام 2025، بينما يواصل PHP الحفاظ على مكانته بقوة في تطوير الويب، فإن إتقان التعامل مع التواريخ والأوقات ليس مجرد مهارة أساسية، بل ضرورة حتمية. تسجيل الأحداث، التخزين المؤقت، التقارير، العمل مع API — كل هذا يتطلب وقتًا دقيقًا. في هذا المقال، سنستعرض ليس فقط الدوال التقليدية، بل أيضًا أفضل الممارسات الحديثة لضمان أن يكون كودك نظيفًا وموثوقًا وجاهزًا لأي منطقة زمنية.

\n\n

الطريقة التقليدية: date() و time()

\n\n

أبسط وأسرع طريقة للحصول على التاريخ والوقت الحالي في PHP هي دالة date(). تأخذ هذه الدالة سلسلة تنسيق وتعيد التاريخ المنسق بناءً على وقت الخادم الحالي أو timestamp محدد.

\n\n
<?php\necho date('Y-m-d H:i:s'); // 2025-04-10 14:30:00\necho date('d.m.Y');        // 10.04.2025\necho date('r');            // Thu, 10 Apr 2025 14:30:00 +0300\n?>
\n\n

وإذا كنت تحتاج فقط إلى Unix timestamp (عدد الثواني منذ 1 يناير 1970)؟ استخدم time():

\n\n
<?php\n$timestamp = time();\necho $timestamp; // 1744273800 (مثال)\necho date('Y-m-d H:i:s', $timestamp);\n?>
\n\n

ملاحظة مهمة: تستخدم date() المنطقة الزمنية المحددة في ملف php.ini عبر التوجيه date.timezone، أو تلك المعينة بواسطة الدالة date_default_timezone_set(). في عام 2025، لا يزال هذا خيارًا عمليًا للنصوص البسيطة، لكن للمشاريع الجادة توجد أدوات أكثر مرونة.

\n\n

النهج الحديث: كلاس DateTime

\n\n

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

\n\n
<?php\n$now = new DateTime();\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00\n\n// مع تحديد المنطقة الزمنية\n$now = new DateTime('now', new DateTimeZone('Asia/Riyadh'));\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00 (توقيت الرياض)\n?>
\n\n

يتيح لك DateTime التعامل بسهولة مع التواريخ: إضافة أيام، طرح أشهر، مقارنة الكائنات. على سبيل المثال:

\n\n
<?php\n$today = new DateTime();\n$nextWeek = (new DateTime())->modify('+7 days');\n$diff = $nextWeek->diff($today);\necho $diff->days; // 7\n?>
\n\n

هذا هو النهج الموصى به في أفضل ممارسات PHP لعام 2025. إنه غير قابل للتغيير (إذا لم تعدل الكائن مباشرة) وبديهي وسهل الفهم.

\n\n

الخيار غير القابل للتغيير: DateTimeImmutable

\n\n

إذا كنت تعمل في مشروع جاد حيث تكون القدرة على التوقع مهمة، استخدم DateTimeImmutable. على عكس DateTime، فإن دوال هذا الكلاس لا تغير الكائن الأصلي، بل تعيد كائنًا جديدًا. هذا يمنع التغييرات العرضية في الحالة.

\n\n
<?php\n$date = new DateTimeImmutable('2025-04-10');\n$newDate = $date->modify('+1 month');\necho $date->format('Y-m-d');    // 2025-04-10 (لم يتغير)\necho $newDate->format('Y-m-d'); // 2025-05-10\n?>
\n\n

في عام 2025، يعتبر هذا أسلوبًا جيدًا — استخدم DateTimeImmutable حيثما أمكن.

\n\n

المناطق الزمنية: الإعداد والتحويل

\n\n

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

\n\n

لتجنب ذلك، حدد دائمًا المنطقة الزمنية بوضوح. الطريقة الأكثر موثوقية هي تعيينها في بداية السكربت باستخدام date_default_timezone_set():

\n

المدونات

توصيات الكتب