🔹 6. DateInterval
✅ ما هي؟
كائن يمثل فرق زمني (مثل: يوم، شهر، سنة) ويُستخدم مع DateTime لإضافة أو طرح مدة زمنية.
✅ الإنشاء:
$interval = new DateInterval("P2Y4M6D"); // 2 سنة و 4 شهور و 6 أيامPHP✅ الحرف P اختصار لـ “Period”، وتُستخدم الأحرف التالية:
- Y = سنوات
- M = شهور
- D = أيام
- T = بداية الجزء الخاص بالوقت
- H = ساعات
- M = دقائق
- S = ثواني
✅ أمثلة:
$date = new DateTime("2025-01-01");
$interval = new DateInterval("P1M"); // شهر واحد
$date->add($interval); // إضافة
echo $date->format("Y-m-d"); // 2025-02-01PHP$date->sub(new DateInterval("P10D")); // طرح 10 أيام
echo $date->format("Y-m-d"); // 2025-01-22PHP🔹 7. DateTimeZone
✅ ما هي؟
كائن يُستخدم لتحديد المنطقة الزمنية لتاريخ معين.
✅ الاستخدام:
$dt = new DateTime("now", new DateTimeZone("Asia/Damascus"));
echo $dt->format("Y-m-d H:i:s");
PHP✅ تغيير المنطقة الزمنية لاحقًا:
$dt->setTimezone(new DateTimeZone("America/New_York"));
echo $dt->format("Y-m-d H:i:s");PHP✅ قائمة المناطق الزمنية:
print_r(DateTimeZone::listIdentifiers());PHP🔹 8. date_default_timezone_set() و get()
✅ تعيين منطقة زمنية افتراضية:
date_default_timezone_set("Asia/Riyadh");PHP✅ معرفة المنطقة الحالية:
echo date_default_timezone_get(); // Asia/RiyadhPHP📌 يُفضل ضبط المنطقة الزمنية في بداية ملفاتك، أو في ملف config رئيسي في مشروعك.
🔹 9. مقارنة التواريخ (DateTime::diff)
✅ استخدام diff() لحساب الفرق بين تاريخين:
$start = new DateTime("2024-05-01");
$end = new DateTime("2025-06-01");
$diff = $start->diff($end);
echo $diff->y . " سنة و" . $diff->m . " شهر و" . $diff->d . " يوم";PHP✅ استخدام invert:
if ($diff->invert == 1) {
echo "التاريخ الأول بعد التاريخ الثاني";
} else {
echo "التاريخ الأول قبل أو يساوي التاريخ الثاني";
}PHP🔹 10. sleep() و usleep() ⏱️
✅ sleep(seconds)
توقف تنفيذ السكربت لعدد معين من الثواني.
echo "انتظر 3 ثوانٍ...<br>";
sleep(3);
echo "تم الاستئناف!";PHP✅ usleep(microseconds)
نفس الفكرة ولكن بالميكروثانية (1 ثانية = 1,000,000 ميكروثانية).
usleep(500000); // نصف ثانيةPHP🔹 11. التحقق من صلاحية تواريخ
✅ باستخدام checkdate():
if (checkdate(2, 29, 2025)) {
echo "تاريخ صحيح";
} else {
echo "تاريخ غير صالح";
}PHP- 📌 تستخدم للتحقق من تواريخ مثل 29 فبراير أو 31 أبريل.
✅ المواضيع الأساسية التي غطيناها:
| رقم | الموضوع | ✅ تمت تغطيته |
|---|---|---|
| 1️⃣ | date() و time() | ✅ |
| 2️⃣ | strtotime() | ✅ |
| 3️⃣ | mktime() | ✅ |
| 4️⃣ | DateTime | ✅ |
| 5️⃣ | DateInterval | ✅ |
| 6️⃣ | DateTimeZone | ✅ |
| 7️⃣ | date_default_timezone_set() و get() | ✅ |
| 8️⃣ | diff() للمقارنة | ✅ |
| 9️⃣ | sleep() و usleep() | ✅ |
| 🔟 | checkdate() | ✅ |
🟡 مواضيع إضافية (اختيارية):
| الموضوع | الفائدة |
|---|---|
✅ getdate() | استخراج تفاصيل التاريخ في مصفوفة (يُستخدم أحيانًا بدل date()) |
✅ localtime() | مثل getdate() ولكن بصيغة عددية فقط |
✅ microtime() | يعطي الوقت بدقة ميكروثانية (مفيد للقياس والأداء) |
✅ strftime() (مهمل) | تنسيق التاريخ حسب المنطقة الزمنية – لكن تم استبداله لاحقًا |
✅ توابع الأداء مثل قياس وقت التنفيذ باستخدام microtime(true) |