"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إضافة أشهر إلى تاريخ في PHP دون تجاوز نهاية الشهر؟

كيفية إضافة أشهر إلى تاريخ في PHP دون تجاوز نهاية الشهر؟

تم النشر بتاريخ 2024-11-13
تصفح:370

How to Add Months to a Date in PHP Without Exceeding Month End?

إضافة الأشهر إلى التواريخ دون تجاوز نهاية الشهر

مقدمة

عند التعامل مع التواريخ، يصبح من الضروري تجنب المواقف التي يتم فيها تجاوز نهاية الشهر عن غير قصد. تستكشف هذه المقالة طريقة موثوقة لإضافة أشهر إلى تاريخ معين مع ضمان بقائها ضمن حدود الشهر المستهدف.

بيان المشكلة

بالنظر إلى وظيفة PHP، فإن الهدف هو إضافة عدد محدد من الأشهر حتى تاريخ دون تجاوز نهاية الشهر. يجب أن تقوم الدالة بضبط النتيجة إلى اليوم الأخير من الشهر إذا كانت الإضافة ستؤدي إلى امتداد.

الحل

لتحقيق الوظيفة المطلوبة، يمكنك الاستفادة من الخطوات التالية:

  1. تحويل تاريخ سلسلة الإدخال إلى كائن DateTime باستخدام DateTime($date_str) الجديد.
  2. استخرج اليوم من الشهر قبل التعديل باستخدام $start_day = $date->format('j ').
  3. استخدم $date->modify(" {$months}month") لزيادة الشهر وفقًا لذلك.
  4. احصل على اليوم من الشهر بعد التعديل باستخدام $end_day = $ date->format('j').
  5. قارن بين $start_day و$end_day. إذا اختلفوا، فإنه يشير إلى أنه تم تجاوز نهاية الشهر. في هذه الحالة، اضبط التاريخ على اليوم الأخير من الشهر السابق باستخدام $date->modify('آخر يوم في الشهر الماضي').

Implementation

function add($date_str, $months)
{
    $date = new DateTime($date_str);

    $start_day = $date->format('j');

    $date->modify(" {$months} month");

    $end_day = $date->format('j');

    if ($start_day != $end_day)
    {
        $date->modify('last day of last month');
    }

    return $date;
}

// Sample tests
$result = add('2011-01-28', 1);   // 2011-02-28
$result = add('2011-01-31', 3);   // 2011-04-30
$result = add('2011-01-30', 13);  // 2012-02-29
$result = add('2011-10-31', 1);   // 2011-11-30
$result = add('2011-12-30', 1);   // 2011-02-28

الاستنتاج

باتباع هذا النهج، يمكنك بثقة إضافة الأشهر إلى التواريخ في PHP مع الالتزام بقيود نهاية الشهر، مما يضمن أن نتائجك تمثل بدقة الإطار الزمني المقصود.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3