Date And Time 2

🔹 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-01
PHP
$date->sub(new DateInterval("P10D")); // طرح 10 أيام
echo $date->format("Y-m-d"); // 2025-01-22
PHP
🔹 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/Riyadh
PHP

📌 يُفضل ضبط المنطقة الزمنية في بداية ملفاتك، أو في ملف 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)