ホームページ > バックエンド開発 > PHPチュートリアル > PHPで指定された2つの日付間の日付の配列を生成するにはどうすればよいですか?

PHPで指定された2つの日付間の日付の配列を生成するにはどうすればよいですか?

DDD
リリース: 2024-12-30 08:09:10
オリジナル
160 人が閲覧しました

How to Generate an Array of Dates Between Two Given Dates in PHP?

PHP で指定された 2 つの日付の間の日付の配列を生成する

この PHP コード スニペットは、日付操作の重要なタスクである生成を実行するのに役立ちます。指定された範囲内のすべての日付を含む配列。このコードは、指定された日付範囲を日付の配列に変換することでこれを正常に実現します。

期待される入力

このコードの期待される入力は、形式は「YYYY-MM-DD」です。たとえば、2010 年 10 月 1 日から 2010 年 10 月 5 日までの日付の配列を生成する場合、入力は次のようになります:

getDatesFromRange( '2010-10-01', '2010-10-05' );
ログイン後にコピー

Expected Output

期待される出力は、指定された範囲内のすべての日付を含む配列です。上記の例では、出力は次のようになります。

Array( '2010-10-01', '2010-10-02', '2010-10-03', '2010-10-04', '2010-10-05' )
ログイン後にコピー

Solution

このコードは、2 つの方法を使用して、指定された 2 つの日付の間の日付の配列を生成します。

  1. の使用ループ:

    • 開始日の新しい DateTime オブジェクトを作成します。
    • 開始日から終了日まで反復し、反復ごとに日を 1 ずつ増やします。
    • 各日付をarray.
  2. DatePeriod クラスの使用:

    • 開始日と終了日、および日間隔。
    • foreach を使用して DatePeriod オブジェクトを反復処理します。ループ。
    • 各 DateTime オブジェクトを目的の形式の文字列に変換します。

コードの実装

function getDatesFromRange($startDate, $endDate) {
    $dates = array();

    // Convert the start and end dates to DateTime objects
    $startDateObj = new DateTime($startDate);
    $endDateObj = new DateTime($endDate);

    // Iterate from the start date to the end date, incrementing the day by one each iteration
    while ($startDateObj <= $endDateObj) {
        $dates[] = $startDateObj->format('Y-m-d');
        $startDateObj->add(new DateInterval('P1D'));
    }

    return $dates;
}
ログイン後にコピー

例使用法

$dates = getDatesFromRange('2010-10-01', '2010-10-05');
print_r($dates);
ログイン後にコピー

出力

Array ( [0] => 2010-10-01 [1] => 2010-10-02 [2] => 2010-10-03 [3] => 2010-10-04 [4] => 2010-10-05 )
ログイン後にコピー

以上がPHPで指定された2つの日付間の日付の配列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート