مراجعة: حسابات التاريخ
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 51 من 68.
التحدي
سهلستتلقى ثلاثة مدخلات: تاريخ البدء، وتاريخ الانتهاء، وسلسلة نصية للتعديل. أول مدخلين هما سلسلتان نصيتان للتاريخ بتنسيق Y-m-d (مثال: 2024-03-15)، والمدخل الثالث هو تعبير تعديل مثل +5 days، أو -2 weeks، أو +1 month.
اقرأ المدخلات الثلاثة، وأنشئ كائنين من نوع DateTime من تاريخي البدء والانتهاء، ثم طبق تعبير التعديل على تاريخ البدء، وبعد ذلك حدد أي التاريخين يأتي لاحقاً: تاريخ البدء المعدل أم تاريخ الانتهاء الأصلي. اطبع التاريخ اللاحق بتنسيق Y-m-d.
تنسيق المدخلات:
- السطر الأول: سلسلة نصية لتاريخ البدء بتنسيق
Y-m-d(مثال:2024-03-15) - السطر الثاني: سلسلة نصية لتاريخ الانتهاء بتنسيق
Y-m-d(مثال:2024-04-10) - السطر الثالث: سلسلة نصية للتعديل (مثال:
+5 daysأو-2 weeks)
المخرجات المتوقعة: التاريخ اللاحق بين تاريخ البدء المعدل وتاريخ الانتهاء الأصلي، منسقاً كـ Y-m-d
جرّب بنفسك
<?php
// قراءة المدخلات الثلاثة
$startDate = trim(fgets(STDIN));
$endDate = trim(fgets(STDIN));
$modification = trim(fgets(STDIN));
// TODO: اكتب الكود الخاص بك أدناه
// إنشاء كائنات DateTime من تاريخي البداية والنهاية
// تطبيق التعديل على تاريخ البداية
// مقارنة تاريخ البداية المعدل مع تاريخ النهاية
// تحديد أي التاريخين هو الأحدث
// إخراج التاريخ الأحدث بتنسيق Y-m-d
echo $laterDate;
?>جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة7التعامل مع التواريخ والأوقات
دالة 'date()'طوابع Unix الزمنية باستخدام 'time()'مقدمة إلى كائن DateTimeتنسيق كائنات DateTimeتعديل كائنات DateTimeمراجعة: حسابات التاريخ2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين