Menu
flag Ar iconالعربيةdown icon

تنسيق التاريخ في PHP: كل محارف التنسيق في date()

تنسيق التاريخ في PHP نص من حروف مثل 'Y-m-d H:i:s'، حيث Y السنة بأربعة أرقام، وm الشهر، وd اليوم، وH الساعة، وi الدقائق، وs الثواني. إليك كل محرف تنسيق مع مثال، إضافة إلى التهريب، وISO 8601، والتواريخ اليابانية، والتحويل من تنسيق إلى آخر.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تنسيق التاريخ في PHP نص تمثل فيه الحروف أجزاء التاريخ: تطبع date('Y-m-d H:i:s') شيئًا مثل 2026-03-14 09:05:07. Y السنة بأربعة أرقام، وm الشهر، وd اليوم، وH الساعة (نظام 24 ساعة)، وi الدقائق، وs الثواني؛ وأي محرف ليس حرف تنسيق، مثل - أو / أو :، يُطبع كما هو. وتعمل نصوص التنسيق نفسها في date() وفي DateTimeImmutable::format().

غيّر $format واضغط Run. التاريخ مثبّت على السبت 14 مارس 2026 الساعة 09:05:07، لترى بالضبط ما يفعله كل حرف:

المخرجات:

Sat, 14 Mar 2026 09:05
2026-03-14
14/03/2026
Saturday, March 14th, 2026
9:05 AM

تنسّق date($format) اللحظة الحالية وتنسّق date($format, $timestamp) طابعًا زمنيًا؛ وتنسّق $date->format($format) كائن تاريخ. وكل ما عدا ذلك عن التواريخ، من strtotime() إلى المناطق الزمنية، موجود في صفحة date() في PHP.

محارف تنسيق التاريخ

كل مثال أدناه هو النتيجة لـ 2026-03-14 09:05:07.123456 بتوقيت UTC.

اليوم

المحرفالمعنىمثال
dيوم الشهر، رقمان بصفر بادئ (01 إلى 31)14
jيوم الشهر دون صفر بادئ (1 إلى 31)14
Dاسم اليوم المختصر، 3 حروفSat
l (L صغيرة)اسم اليوم الكاملSaturday
Nيوم الأسبوع حسب ISO، من 1 (الاثنين) إلى 7 (الأحد)6
wيوم الأسبوع، من 0 (الأحد) إلى 6 (السبت)6
Sاللاحقة الإنجليزية لليوم: st أو nd أو rd أو th. استخدمها بعد jth
zيوم السنة، بدءًا من 072

الأسبوع والشهر

المحرفالمعنىمثال
Wرقم الأسبوع حسب ISO 8601 (تبدأ الأسابيع يوم الاثنين)11
Fاسم الشهر الكاملMarch
Mاسم الشهر المختصر، 3 حروفMar
mرقم الشهر بصفر بادئ (01 إلى 12)03
nرقم الشهر دون صفر بادئ (1 إلى 12)3
tعدد أيام الشهر31

السنة

المحرفالمعنىمثال
Yالسنة الكاملة، 4 أرقام على الأقل2026
yالسنة، رقمان26
L1 إذا كانت السنة كبيسة، وإلا 00
oسنة ترقيم الأسابيع حسب ISO 8601 (استخدمها مع W)2026
Xالسنة الكاملة الموسعة مع إشارة (PHP 8.2 وما بعدها)+2026
xالسنة الكاملة الموسعة، مع الإشارة عند الحاجة فقط (PHP 8.2 وما بعدها)2026

الوقت

المحرفالمعنىمثال
Hالساعة، نظام 24 ساعة، بصفر بادئ (00 إلى 23)09
Gالساعة، نظام 24 ساعة، دون صفر بادئ (0 إلى 23)9
hالساعة، نظام 12 ساعة، بصفر بادئ (01 إلى 12)09
gالساعة، نظام 12 ساعة، دون صفر بادئ (1 إلى 12)9
iالدقائق بصفر بادئ (00 إلى 59)05
sالثواني بصفر بادئ (00 إلى 59)07
aam أو pmam
AAM أو PMAM
vأجزاء الألف من الثانية123
uأجزاء المليون من الثانية (دائمًا 000000 في date()، التي تأخذ ثواني كاملة)123456
Bتوقيت Swatch للإنترنت (000 إلى 999)420

المنطقة الزمنية

المحرفالمعنىمثال
eمعرّف المنطقة الزمنيةUTC
Tاختصار المنطقة الزمنيةUTC
Pالفرق عن UTC مع نقطتين+00:00
pمثل P، لكن Z لتوقيت UTCZ
Oالفرق عن UTC دون نقطتين+0000
Zالفرق بالثواني0
I (i كبيرة)1 أثناء التوقيت الصيفي، وإلا 00

التاريخ والوقت الكاملان

المحرفالمعنىمثال
cالتاريخ والوقت حسب ISO 86012026-03-14T09:05:07+00:00
rتاريخ RFC 2822، المستخدم في ترويسات البريد الإلكترونيSat, 14 Mar 2026 09:05:07 +0000
Uالطابع الزمني Unix (الثواني منذ 1970-01-01 بتوقيت UTC)1773479107

الجدول نفسه، حيًا: تطبع هذه الكتلة كل محرف لتاريخ تختاره. ضع تاريخ ميلادك، أو تاريخًا بعد الظهر، أو تاريخًا في نهاية سنة كبيسة:

طباعة حروف وكلمات داخل التنسيق

يُقرأ أي حرف في نص التنسيق على أنه محرف تنسيق، لذا لا تطبع 'Today is l' العبارة "Today is": فـ T وo وd وa وy وi وs كلها محارف تنسيق. ضع شرطة مائلة عكسية قبل كل حرف تريد طباعته كما هو. وفي نص بين علامتي تنصيص مزدوجتين، \t محرف جدولة أصلًا، لذا استخدم علامتي التنصيص المفردتين للتنسيقات التي فيها شرطات مائلة عكسية:

المخرجات:

UTC202614am26 0507 Saturday
Today is Saturday
Saturday the 14th of March
2026-03-14T09:05:07
Saturday 	09UTC 14th

تنسيقات التاريخ الشائعة

لا تحتاج معظم الشيفرات إلا إلى عدد قليل من التنسيقات. تطبعها هذه الكتلة جدول HTML، فتظهر في تبويب Page:

خزّن التواريخ وقارنها بصيغة Y-m-d أو Y-m-d H:i:s: النصوص بهذا الترتيب تُرتَّب كما تُرتَّب التواريخ، وهذا ما لا تفعله نصوص d/m/Y.

ISO 8601 وDATE_ATOM والتنسيقات القياسية الأخرى

لدى PHP ثوابت للتنسيقات التي تتوقعها الواجهات البرمجية والخلاصات وملفات تعريف الارتباط. DATE_ATOM (وأيضًا DateTimeInterface::ATOM) هو ISO 8601 وRFC 3339، التنسيق الذي تستخدمه واجهات JSON البرمجية:

المخرجات:

2026-03-14T09:05:07+00:00
2026-03-14T09:05:07+00:00
2026-03-14T09:05:07.000+00:00
Sat, 14 Mar 2026 09:05:07 +0000
Sat, 14 Mar 2026 09:05:07 +0000
Saturday, 14-Mar-2026 09:05:07 UTC
Y-m-d\TH:i:sP

يوجد أيضًا الثابت DATE_ISO8601، لكن ليس في فرق توقيته نقطتان (+0000)، وهذا ما لا يسمح به ISO 8601 بهذا الشكل؛ استخدم DATE_ATOM.

تنسيق التاريخ الياباني (Y年m月d日)

المحارف التي ليست حروف تنسيق تُطبع كما هي، ويشمل ذلك حروف الكانجي، لذا تعمل 'Y年n月j日' كما كُتبت. يحذف n وj الصفر البادئ (3月14日)، ويُبقيه m وd (03月14日). واسم اليوم هو الجزء الوحيد الذي لا تستطيع date() ترجمته، لأنها لا تعرف إلا الأسماء الإنجليزية؛ اربط رقم w بقائمتك الخاصة بدلًا من ذلك:

المخرجات:

2026年3月14日
2026年03月14日 09時05分
2026年3月14日(土)
2026/03/14

للتعريب الكامل، بما فيه أسماء الأشهر بلغات أخرى والعصر الياباني (令和)، تنسّق IntlDateFormatter من امتداد intl بأنماط الإعدادات المحلية. وتستخدم حروف أنماط ICU (yyyy وMM وEEEE)، لا محارف PHP المذكورة في هذه الصفحة:

<?php
$formatter = new IntlDateFormatter('ja_JP', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Asia/Tokyo');
echo $formatter->format(new DateTimeImmutable('2026-03-14')); // 2026年3月14日土曜日

$era = new IntlDateFormatter('ja_JP@calendar=japanese', IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Asia/Tokyo', IntlDateFormatter::TRADITIONAL);
echo $era->format(new DateTimeImmutable('2026-03-14'));       // 令和8年3月14日

تحويل تاريخ من تنسيق إلى آخر

لتحويل 14/03/2026 إلى 2026-03-14، حلّل النص بالتنسيق المكتوب به، باستخدام DateTimeImmutable::createFromFormat()، ثم نسّقه من جديد. وتستخدم المحارف نفسها التي في الجدول. ابدأ التنسيق بـ !، وإلا مُلئت الحقول التي لم تعطها (الوقت، هنا) من اللحظة الحالية:

المخرجات:

2026-03-14 00:00:00
March 14, 2026
bool(false)
2026-03-03
Array
(
    [10] => The parsed date was invalid
)

للتواريخ التي يكتبها المستخدمون، عامل أي تحذير من getLastErrors() على أنه تاريخ غير صالح، كما تعامل false.

أخطاء شائعة مع تنسيقات التاريخ

ثلاثة أخطاء تتكرر كثيرًا: m حيث قُصد i، وY مقابل y، وترك strtotime() تخمّن ترتيب اليوم والشهر. تقرأ strtotime() الشرطات المائلة بالترتيب الأمريكي شهر/يوم والشرطات أو النقاط بترتيب يوم ثم شهر، فتعطي الأرقام نفسها تاريخين مختلفين:

المخرجات:

09:03:07
09:05:07
14/03/26
2026-03-04
2026-04-03
bool(false)

عندما تعرف تنسيق المُدخل، صرّح به بـ createFromFormat() بدل ترك strtotime() تخمّن.

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

ماذا تعني date('Y-m-d') في PHP؟

يُستبدل كل حرف بجزء من التاريخ: Y السنة بأربعة أرقام، وm الشهر بصفر بادئ، وd اليوم بصفر بادئ، وتُطبع الشرطات كما هي. في 14 مارس 2026 تعيد 2026-03-14.

كيف أحوّل تاريخًا من تنسيق إلى آخر في PHP؟

حلّله بالتنسيق الذي هو عليه، ثم نسّقه بالذي تريده: تعيد DateTimeImmutable::createFromFormat('!d/m/Y', '14/03/2026')->format('Y-m-d') القيمة 2026-03-14. وتعيد createFromFormat() القيمة false عندما لا يطابق النص، فافحص ذلك أولًا.

ما الفرق بين m وi في تنسيق التاريخ في PHP؟

m هو الشهر (01 إلى 12) وi هي الدقائق (00 إلى 59). وكتابة 'H:m' بدل 'H:i' خطأ شائع: يعرض الوقت رقم الشهر حيث يجب أن تكون الدقائق.

كيف أنسّق تاريخًا بصيغة ISO 8601 في PHP؟

استخدم المحرف c أو الثابت DATE_ATOM: تعيد $date->format(DATE_ATOM) القيمة 2026-03-14T09:05:07+00:00. تجنّب DATE_ISO8601: ليس في فرق توقيته نقطتان (+0000)، وهذا ليس ISO 8601 صالحًا.

كيف أعرض يوم الأسبوع باليابانية باستخدام date() في PHP؟

لا تطبع date() إلا الأسماء الإنجليزية، لذا اربط رقم w (0 للأحد حتى 6 للسبت) بقائمتك الخاصة: ['日','月','火','水','木','金','土'][$date->format('w')]. ومع امتداد intl، تستطيع IntlDateFormatter تنسيق تواريخ كاملة بأي إعدادات محلية.

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن