「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 月末を超えずにPHPで日付に月を追加する方法は?

月末を超えずにPHPで日付に月を追加する方法は?

2024 年 11 月 13 日に公開
ブラウズ:146

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

月末を超えずに日付に月を追加する

はじめに

日付を操作する場合、誤って月末を超える状況を避けることが重要になります。この記事では、指定された日付を対象月の範囲内に保ちながら、その日付に月を追加する信頼性の高い方法について説明します。

問題ステートメント

PHP 関数の場合、目標は、月末を超えない範囲で、日付までの指定された月数。追加によりスピルオーバーが発生する場合、この関数は結果を月の最終日に調整する必要があります。

解決策

目的の機能を実現するには、次の手順を利用できます。

  1. new DateTime($date_str) を使用して入力文字列日付を DateTime オブジェクトに変換します。
  2. $start_day = $date->format('j を使用して変更前の日付を抽出します').
  3. $date->modify(" {$months} month") を使用して、それに応じて月を増分します。
  4. $end_day = $ を使用して、変更後の月の日付を取得します。 date->format('j').
  5. $start_day と $end_day を比較します。それらが異なる場合は、月末を超えていることを示します。その場合は、 $date->modify('last day of last month').

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