PHP Date() ووظيفة الوقت: كيفية الحصول على الطابع الزمني الحالي؟

⚡ ملخص ذكي

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

  • 📅 ما تفعله الدالة date(): تقوم دالة التاريخ بتحويل الطابع الزمني إلى سلسلة منسقة باستخدام أحرف مثل Y و m و d للسنة والشهر واليوم.
  • ⏱️ الطابع الزمني لنظام يونكس: الطابع الزمني هو عدد الثواني منذ 1 يناير 1970 بتوقيت غرينتش، و time() تُرجع القيمة الحالية.
  • 🌍 المناطق الزمنية: يقوم date_default_timezone_set بتغيير المنطقة الزمنية النشطة، ويقوم DateTimeZone::listIdentifiers بإدراج كل منطقة مدعومة.
  • 🔧 mktime: تقوم الدالة mktime بإنشاء طابع زمني من ساعة ودقيقة وثانية وشهر ويوم وسنة محددة.
  • 🔤 تنسيق الأحرف: تتحكم الأحرف المفردة في الإخراج، على سبيل المثال H للوقت 24 ساعة، و l لاسم يوم الأسبوع، و F لاسم الشهر.
  • 📐 جداول مرجعية: تسرد الجداول المجمعة أحرف تنسيق الوقت واليوم والشهر والسنة مع مثال قابل للتنفيذ لكل منها.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن لأدوات الذكاء الاصطناعي توليد تنسيق التاريخ ورمز الفرق والمساعدة في حل أخطاء المناطق الزمنية المربكة.

تاريخ PHP () الوظيفة

تاريخ PHP () الوظيفة

دالة التاريخ في PHP هي دالة مدمجة تُسهّل التعامل مع أنواع بيانات التاريخ. تُستخدم هذه الدالة لتنسيق التاريخ أو الوقت إلى صيغة سهلة القراءة. يمكن استخدامها لعرض تاريخ نشر مقال أو لتسجيل آخر تحديث للبيانات في قاعدة البيانات.

PHP بناء جملة التاريخ والمثال

تحتوي دالة التاريخ (date()) في لغة PHP على الصيغة الأساسية التالية.

<?php
date(format,[timestamp]);
?>

هنا،

  • الدالة "date(…)" هي الدالة التي تُرجع الطابع الزمني الحالي بتنسيق PHP على الملقم.
  • "التنسيق" هو ​​التنسيق العام الذي نريد أن يكون عليه الناتج، على سبيل المثال:
    • "Ymd" هو اختصار لتنسيق التاريخ في PHP YYYY-MM-DD
    • "Y" لعرض العام الحالي
  • يُعدّ حقل "[الطابع الزمني]" اختياريًا. في حال عدم تحديد طابع زمني، سيستخدم PHP التاريخ والوقت الحاليين على الخادم.

دعونا نلقي نظرة على مثال أساسي يعرض السنة الحالية.

<?php

echo date("Y");

?>

الإخراج:

2026

ما هو الطابع الزمني؟

الطابع الزمني في لغة PHP هو قيمة رقمية بالثواني بين الوقت الحالي والقيمة عند 1st يناير 1970 00:00:00 بتوقيت غرينتش (GMT).

تعتمد القيمة التي يتم إرجاعها بواسطة دالة الوقت على المنطقة الزمنية الافتراضية.

يتم تحديد المنطقة الزمنية الافتراضية في ملف php.ini. ويمكن أيضاً تحديدها برمجياً باستخدام الدالة date_default_timezone_set.

يعرض الكود أدناه الطابع الزمني الحالي.

<?php

echo time();

?>

بافتراض أنك قمت بحفظ الملف timestamp.php في مجلد phptuts، انتقل إلى URL http://localhost/phptuts/timestamp.php

الطابع الزمني

ملاحظة: قيمة الطابع الزمني ليست ثابتة، بل تتغير كل ثانية.

الحصول على قائمة معرفات المنطقة الزمنية المتاحة

قبل أن ننظر في كيفية ضبط المنطقة الزمنية الافتراضية برمجيًا، دعونا نلقي نظرة على كيفية الحصول على قائمة بالمناطق الزمنية المدعومة.

<?php

$timezone_identifiers = DateTimeZone::listIdentifiers();

foreach($timezone_identifiers as $key => $list){

echo $list . "<br/>";

}
?>

هنا،

  • يستدعي الأمر "$timezone_identifiers = DateTimeZone::listIdentifiers();" الدالة الثابتة listIdentifiers التابعة للفئة المضمنة DateTimeZone. تُعيد الدالة listIdentifiers قائمةً من المعرّفات التي تُسند إلى المتغير $timezone_identifiers.
  • تقوم الدالة "foreach{…}" بالتكرار عبر المصفوفة وطباعة القيم.

بافتراض أنك قمت بحفظ الملف list_time_zones.php في مجلد phptuts، انتقل إلى URL http://localhost/phptuts/list_time_zones.php

معرفات المنطقة الزمنية

تقوم PHP بتعيين المنطقة الزمنية برمجياً

تسمح لك وظيفة date_default_timezone_set بتعيين المنطقة الزمنية الافتراضية من برنامج PHP النصي.

سيتم بعد ذلك استخدام المنطقة الزمنية المحددة بواسطة جميع التواريخ وظائف PHP في نصوصك البرمجية. وله الصيغة التالية.

<?php
date_default_timezone_set(string $timezone_identifier);
?>

هنا،

  • "date_default_timezone_set()" هي الوظيفة التي تحدد المنطقة الزمنية الافتراضية
  • "string $timezone_identifier" هو معرف المنطقة الزمنية

يعرض النص البرمجي أدناه الوقت وفقًا للمنطقة الزمنية الافتراضية المحددة في ملف php.ini. ثم يقوم بتغيير المنطقة الزمنية الافتراضية إلى آسيا/كلكتا ويعرض الوقت مرة أخرى.

<?php
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");

date_default_timezone_set("Asia/Calcutta");
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");
?>

بافتراض أنك قمت بحفظ الملف set_time_zone.php في مجلد phptuts، انتقل إلى URL http://localhost/phptuts/set_time_zone.php

تقوم PHP بتعيين المنطقة الزمنية برمجياً

وظيفة PHP Mktime

تقوم الدالة mktime بإرجاع الطابع الزمني في ملف يونكس تنسيق.

يحتوي على الصيغة التالية.

<?php
mktime(hour, minute, second, month, day, year, is_dst);
?>

هنا،

  • "mktime(...)" هي وظيفة إنشاء الطابع الزمني لـ PHP
  • كلمة "ساعة" اختيارية؛ إنها رقم الساعة
  • كلمة "دقيقة" اختيارية؛ إنها عدد الدقائق
  • كلمة "ثانية" اختيارية؛ إنها عدد الثواني
  • كلمة "شهر" اختيارية؛ إنها رقم الشهر
  • كلمة "يوم" اختيارية؛ إنها رقم اليوم
  • كلمة "سنة" اختيارية؛ إنها رقم السنة
  • يُعدّ "is_dst" خيارًا اختياريًا؛ ويُستخدم لتحديد التوقيت الصيفي. القيمة 1 تعني وجود التوقيت الصيفي، و0 تعني عدم وجوده، و-1 تعني أنه غير معروف.

دعونا الآن نلقي نظرة على مثال يقوم بإنشاء طابع زمني للتاريخ 13/10/2025 باستخدام وظيفة mktime.

<?php

echo mktime(0,0,0,10,13,2025);

?>

هنا،

  • "0,0,0" هي الساعة والدقيقة والثانية على التوالي.
  • "10" هو شهر السنة
  • "13" هو يوم الشهر
  • "2025" هو العام

الإخراج:

1760328000

مرجع تنسيق التاريخ في PHP

توضح الجداول أدناه أحرف التنسيق الشائعة المستخدمة عند العمل مع دوال التاريخ في PHP.

معلمات الوقت

معامل الوصف مثال
"R" إرجاع التاريخ والوقت الكاملين
<?php
echo date("r");
?>
"أ"، "أ" إرجاع ما إذا كان الوقت الحالي هو صباحًا أو مساءً، أو صباحًا أو مساءً على التوالي
<?php
echo date("a");
echo date("A");
?>
"g"، "G" إرجاع الساعة بدون الأصفار البادئة [1 إلى 12]، [0 إلى 23] على التوالي
<?php
echo date("g");
echo date("G");
?>
"h"، "H" تُرجع الساعة مع الأصفار البادئة [من 01 إلى 12]، [من 00 إلى 23] على التوالي
<?php
echo date("h");
echo date("H");
?>
"يكون" إرجاع الدقائق/الثواني ذات الأصفار البادئة [00 إلى 59]
<?php
echo date("i");
echo date("s");
?>

معلمات اليوم

معامل الوصف مثال
"د" إرجاع يوم الشهر بالأصفار البادئة [01 إلى 31]
<?php
echo date("d");
?>
"ي" إرجاع يوم من الشهر بدون أصفار بادئة [من 1 إلى 31]
<?php
echo date("j");
?>
"د" يُعيد الأحرف الثلاثة الأولى من اسم اليوم [من الأحد إلى السبت]
<?php
echo date("D");
?>
"L" يُعيد اسم اليوم من أيام الأسبوع [من الأحد إلى السبت]
<?php
echo date("l");
?>
"w" يُرجع يوم الأسبوع بدون أصفار بادئة [من 0 إلى 6]؛ يتم تمثيل يوم الأحد بصفر (0) حتى يتم تمثيل يوم السبت بستة (6).
<?php
echo date("w");
?>
"Z" إرجاع يوم السنة بدون مسافات بادئة [من 0 إلى 365]
<?php
echo date("z");
?>

معلمات الشهر

معامل الوصف مثال
"م" إرجاع رقم الشهر الذي يحتوي على أصفار بادئة [01 إلى 12]
<?php
echo date("m");
?>
"ن" إرجاع رقم الشهر بدون الأصفار البادئة [1 إلى 12]
<?php
echo date("n");
?>
"M" إرجاع الأحرف الثلاثة الأولى من اسم الشهر [من يناير إلى ديسمبر]
<?php
echo date("M");
?>
"F" إرجاع اسم الشهر [من يناير إلى ديسمبر]
<?php
echo date("F");
?>
"ر" إرجاع عدد أيام الشهر [28 إلى 31]
<?php
echo date("t");
?>

معلمات السنة

معامل الوصف مثال
"L" تُرجع الدالة 1 إذا كانت السنة كبيسة، و0 إذا لم تكن كذلك.
<?php
echo date("L");
?>
"نعم" يُرجع تنسيق السنة المكون من أربعة أرقام
<?php
echo date("Y");
?>
"نعم" يُرجع تنسيق السنة المكون من رقمين (من 00 إلى 99)
<?php
echo date("y");
?>

الأسئلة الشائعة

الدالة date() هي دالة إجرائية بسيطة تُستخدم لتنسيق الطابع الزمني. أما فئة DateTime فهي كائنية التوجه وتدعم العمليات الحسابية والمقارنة والمناطق الزمنية وعدم قابلية التغيير، مما يجعلها أفضل للتعامل مع منطق التاريخ المعقد في التطبيقات الكبيرة.

استخدم الدالة strtotime()، التي تقرأ تنسيقات مثل '2025-10-13' أو 'next' Mondayوتُعيد هذه الدالة طابعًا زمنيًا بنظام يونكس. أما بالنسبة للتحليل الدقيق لتنسيق معروف، فإن استخدام DateTime::createFromFormat أكثر أمانًا لأنه يفشل بوضوح في حالة الإدخال غير الصالح.

أنشئ كائنين من نوع DateTime واستدعِ الدالة diff()، التي تُرجع قيمة DateInterval. يمكنك بعد ذلك قراءة عدد الأيام أو الأشهر أو السنوات، على سبيل المثال $start->diff($end)->days للحصول على إجمالي عدد الأيام بين التاريخين.

نعم. صف تنسيق الإدخال والإخراج، وسيتمكن الذكاء الاصطناعي من إنتاج كود date() أو DateTime أو strtotime، بما في ذلك إضافة الفواصل الزمنية أو تحويل المناطق الزمنية. اختبره في حالات استثنائية مثل السنوات الكبيسة ونهايات الأشهر.

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

تلخيص هذه التدوينة بـ: