انتقل إلى محتوى الدرس

PHP DateInterval Specifiers Table جدول رموز الفترات الزمنية القياسية ISO 8601

احسب الفروق الزمنية بدقة، وأضف واطرح الفترات عبر DateTimeImmutable وDateInterval، وحوّل التوقيت بين المناطق الزمنية المختلفة في PHP 8.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تبدأ نصوص الفترات القياسية ISO 8601 بالحرف P لوحدات التاريخ، وتستخدم الحرف T للفصل قبل وحدات الوقت (الساعات والدقائق والثواني).

  • انتبه للفرق الدقيق بين P1M (شهر واحد في قسم التاريخ) وPT1M (دقيقة واحدة بعد فاصل الوقت T).
  • في دالة التنسيق date_interval_format() تبدأ الرموز بالعلامة % مثل %y للسنوات و%m للشهور و%d للأيام و%a لإجمالي الأيام.
  • فضّل دائماً التواريخ غير القابلة للتعديل المباشر (date_create_immutable()) لمنع التعديل الجانبي غير المقصود على التواريخ المشتركة.

تنسق الدالة date_interval_format() الفارق الزمني بين التاريخين على صورة 2 days, 6 hrs, 30 mins.

رمز ISO 8601 / التنسيقالمعنىمثال عمليالخطأ الشائع
P1Y2M10D1 Year, 2 Months, 10 DaysDate period unitsMissing leading P
PT4H30M4 Hours, 30 MinutesTime units after TWriting P30M (30 months!) instead of PT30M
%a vs %dTotal days vs Remainder days63 vs 4Using %d when total days is needed
%RSign (+ or -)%R%a -> +63Forgetting to check if $diff->invert === 1

PHP
<?php
date_default_timezone_set('UTC');
$d1 = date_create_immutable('2026-06-01 08:00:00');
$d2 = date_create_immutable('2026-06-03 14:30:00');
$diff = date_diff($d1, $d2);
echo date_interval_format($diff, '%a days, %h hrs, %i mins') . "\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تبدأ نصوص الفترات القياسية ISO 8601 بالحرف P لوحدات التاريخ، وتستخدم الحرف T للفصل قبل وحدات الوقت (الساعات والدقائق والثواني). انتبه للفرق الدقيق بين P1M (شهر واحد في قسم التاريخ) وPT1M (دقيقة واحدة بعد فاصل الوقت T). في دالة التنسيق date_interval_format() تبدأ الرموز بالعلامة % مثل %y للسنوات و%m للشهور و%d للأيام و%a لإجمالي الأيام. فضّل دائماً التواريخ غير القابلة للتعديل المباشر (date_create_immutable()) لمنع التعديل الجانبي غير المقصود على التواريخ المشتركة.