تعديل كائنات DateTime
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 50 من 68.
بمجرد حصولك على كائن DateTime، غالباً ما ستحتاج إلى تغييره لتمثيل لحظة زمنية مختلفة. تسمح لك طريقة modify() بإضافة أو طرح الوقت من كائن DateTime الخاص بك باستخدام تعبيرات اللغة الطبيعية، مما يجعل حسابات التاريخ بديهية وسهلة القراءة.
تقبل الطريقة modify() نفس أنواع السلاسل النصية التي تعمل مع strtotime()، مثل '+1 day' أو '-2 weeks' أو 'next Friday'. وعلى عكس إنشاء كائن جديد في كل مرة، تقوم هذه الطريقة بتعديل كائن DateTime الموجود مباشرة، مما يجعله فعالاً لعمليات التاريخ المتسلسلة.
<?php
$date = new DateTime();
echo $date->format('Y-m-d'); // تاريخ اليوم
$date->modify('+1 week');
echo $date->format('Y-m-d'); // بعد أسبوع من اليوم
$date->modify('-3 days');
echo $date->format('Y-m-d'); // بعد 4 أيام من اليوم
?>يوفر لك هذا النهج مرونة قوية لإجراء حسابات التاريخ. يمكنك ربط تعديلات متعددة أو استخدام تعبيرات معقدة مثل '+2 months -1 day' لإجراء عمليات حسابية معقدة للتاريخ مع الحفاظ على وضوح الكود وقابليته للصيانة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلين: سلسلة نصية للتاريخ بتنسيق Y-m-d H:i:s وسلسلة نصية للتعديل. المدخل الأول هو تاريخ ووقت محدد (مثال: 2024-03-15 14:30:25)، والمدخل الثاني هو تعبير تعديل مثل +1 week أو -3 days أو +2 months.
اقرأ كلا المدخلين، وأنشئ كائن DateTime باستخدام سلسلة التاريخ النصية، واستخدم التابع modify() لتطبيق تعبير التعديل على كائن DateTime، ثم اطبع التاريخ المعدل بتنسيق Y-m-d H:i:s.
تنسيق المدخلات:
- السطر الأول: سلسلة نصية للتاريخ بتنسيق
Y-m-d H:i:s(مثال:2024-03-15 14:30:25) - السطر الثاني: سلسلة نصية للتعديل (مثال:
+1 weekأو-3 daysأو+2 months)
المخرجات المتوقعة: التاريخ المعدل منسقاً كـ Y-m-d H:i:s
ورقة مرجعية
تسمح لك الطريقة modify() بإضافة أو طرح الوقت من كائن DateTime باستخدام تعبيرات اللغة الطبيعية:
<?php
$date = new DateTime();
$date->modify('+1 week'); // إضافة أسبوع واحد
$date->modify('-3 days'); // طرح ثلاثة أيام
$date->modify('+2 months -1 day'); // تعبيرات معقدة
?>تقوم الطريقة بتعديل كائن DateTime الحالي مباشرةً وتقبل نفس تنسيقات السلاسل النصية مثل strtotime()، مثل '+1 day'، أو '-2 weeks'، أو 'next Friday'.
جرّب بنفسك
<?php
// قراءة سلسلة التاريخ
$dateString = trim(fgets(STDIN));
// قراءة سلسلة التعديل
$modificationString = trim(fgets(STDIN));
// TODO: اكتب الكود الخاص بك أدناه
// إنشاء كائن DateTime، وتطبيق التعديل، وتنسيق النتيجة
// إخراج التاريخ المعدل
echo $modifiedDate;
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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'مراجعة: ترتيب لوحة المتصدرين