كيفية الحصول على السنة الحالية في PHP: 5 طرق سهلة

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

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

ابدأ الدورة

مقدمة: لماذا سؤال "السنة الحالية" شائع جدًا؟

\n\n

قد يبدو الأمر بسيطًا: أن تسأل PHP "ما هي السنة الحالية؟" وتحصل على الإجابة. لكن المفاجأة أن سؤال "How do I use PHP to get the current year?" حصد عشرات الآلاف من المشاهدات على Stack Overflow. لماذا؟

\n\n

أولاً، هي من أولى المهام التي يواجهها المبتدئ: عرض "© 2024" في تذييل الموقع، إنشاء قائمة سنوات ديناميكية في نموذج التسجيل، أو التحقق من عمر المستخدم. ثانيًا، تقدم PHP عدة طرق مختلفة، ولكل منها تفاصيلها الدقيقة. ثالثًا (وهذا هو الأكثر خطورة)، كثيرًا ما يخلط المبتدئون بين date('y') و date('Y') — فيحصلون على 24 بدلاً من 2024. ثم يتساءلون لماذا موقعهم "عالق في القرن الماضي".

\n\n

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

\n\n

1. الطريقة الأسهل: دالة date()

\n\n

ملك دوال PHP للتعامل مع التواريخ هو date(). تأخذ هذه الدالة تنسيقًا واختياريًا طابعًا زمنيًا. إذا لم تحدد الطابع، يتم استخدام الوقت الحالي للخادم.

\n\n

كيفية الحصول على السنة بأربعة أرقام (2024, 2025…)

\n
<?php\necho date('Y'); // سيطبع: 2024\n?>
\n\n

الرمز Y (حرف كبير) هو تمثيل كامل للسنة، 4 أرقام. يجب استخدامه في 99% من الحالات.

\n\n

كيفية الحصول على السنة برقمين (24, 25…)

\n
<?php\necho date('y'); // سيطبع: 24\n?>
\n\n

الرمز y (حرف صغير) هو السنة برقمين. استخدمه فقط إذا كنت تكتب برنامجًا تجريبيًا أو تعمل مع كود قديم (والذي غالبًا ما يكون معطلاً بسبب مشاكل مشابهة لـ Y2K).

\n\n

مثال عملي: حقوق النشر في التذييل

\n
<footer>\n    <p>&copy; 2010–<?php echo date('Y'); ?> موقعي الرائع</p>\n</footer>
\n\n

هذا الكود سيُحدّث السنة في التذييل تلقائيًا — لن تضطر لتعديله كل عام. رائع، أليس كذلك؟

\n\n

2. الطريقة الكائنية: كلاس DateTime

\n\n

إذا كنت تكتب كود PHP حديث (7.x, 8.x)، فمن الأفضل استخدام كلاس DateTime. إنه أكثر مرونة، وسهل الاستخدام، وأسهل في القراءة.

\n\n

الحصول على السنة عبر DateTime

\n
<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>
\n\n

تعمل دالة format() بنفس طريقة date()، لكن على كائن. الميزة هي أنه يمكنك بسهولة تغيير التاريخ، إضافة أيام أو أشهر، ثم تنسيقه مرة أخرى.

\n\n

مثال متقدم: السنة من تاريخ محدد

\n
<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>
\n\n

هذا مفيد عند العمل مع قاعدة بيانات وتخزين التواريخ كنصوص.

\n\n

3. الطريقة التقليدية strftime() (مع تحذير)

\n\n

دالة strftime() هي طريقة أخرى للحصول على السنة. ميزتها أنها تراعي الإعدادات المحلية (اللغة والمنطقة). على سبيل المثال، في الإعدادات العربية، يمكنها عرض اسم الشهر بالعربية.

\n\n

مثال مع strftime

\n
<?php\nsetlocale(LC_TIME, 'ar_AE.utf8');\necho strftime('%Y'); // 2024\n?>
\n\n

لكن هناك نقطة مهمة: بدءًا من PHP 8.1، تم وضع علامة مهملة (deprecated) على دالة strftime(). لا يزال يمكن استخدامها، لكن قد تُحذف في الإصدارات المستقبلية. إذا كنت تكتب كودًا جديدًا، فاستخدم DateTime.

\n\n

4. المتغير $_SERVER['REQUEST_TIME']

\n\n

أحيانًا تحتاج للحصول على السنة "بسرعة" دون إنشاء كائنات. لهذا، يمكنك استخدام المصفوفة الشاملة $_SERVER.

\n\n
<?php\necho date('Y', $_SERVER['REQUEST_TIME']); // 2024\n?>
\n\n

يحتوي $_SERVER['REQUEST_TIME'] على الطابع الزمني لبدء الطلب الحالي. إنه سريع ولا يتطلب إنشاء كائنات جديدة.

\n\n

5. دالة time() مع date()

\n\n

يمكنك أيضًا استخدام دالة time() التي تعيد الطابع الزمني الحالي، ثم تمريره إلى date().

\n\n
<?php\necho date('Y', time()); // 2024\n?>
\n\n

هذه الطريقة مشابهة لاستخدام date('Y') مباشرة، لكنها تعطيك تحكمًا أكبر إذا كنت بحاجة لتعديل الطابع الزمني قبل التنسيق.

\n\n

أخطاء شائعة يجب تجنبها

\n\n
    \n
  • الخلط بين Y و y: استخدم Y دائمًا للحصول على 4 أرقام، إلا إذا كنت تحتاج حقًا إلى رقمين.
  • \n
  • إهمال المنطقة الزمنية: تأكد من ضبط المنطقة الزمنية باستخدام date_default_timezone_set().
  • \n
  • استخدام strftime() في كود جديد: تجنبها لأنها مهملة.
  • \n
\n\n

الخلاصة: أي طريقة تختار؟

\n\n

إذا كنت مبتدئًا، استخدم date('Y') — إنها الأسهل. إذا كنت تكتب كودًا احترافيًا، استخدم DateTime — إنها الأكثر مرونة. تجنب strftime() في المشاريع الجديدة. والآن، جرب بنفسك!

المدونات

توصيات الكتب