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

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

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

How to Add Months to a Date in PHP Without Exceeding the Last Day of the Month?

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

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

ولمعالجة هذه المشكلة، نقدم نهجًا يضمن الدقة في إضافة التاريخ:

function add($date_str, $months)
{
    $date = new DateTime($date_str);
    
    // Capture the starting day of the month
    $start_day = $date->format('j');
    
    // Add the specified number of months
    $date->modify(" {$months} month");

    // Extract the resulting day of the month
    $end_day = $date->format('j');
    
    // Check if the resulting day differs from the original day
    if ($start_day != $end_day)
    {
        // If they are different, it means the month changed, so we adjust the date
        $date->modify('last day of last month');
    }
    
    return $date;
}

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

لتوضيح فائدة هذه الوظيفة، إليك بعض الأمثلة:

$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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3