0
$start_date = strtotime('2011-08-21');

    for($i=0 ; $i < 5; $i++)
    {
        echo "i = $i  and ";

        $start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);
        echo date('Y-m-d',$start_date)."<br /><hr />";
    }

i = 0 and 2011-08-21
i = 1 and 2012-08-21
i = 2 and 2014-08-21
i = 3 and 2017-08-21
i = 4 and 2021-08-21

2012年以降に正しく追加されない理由がわかりませんでした。

ありがとう

4

3 に答える 3

2

毎回1年追加したい場合は、おそらくこのようにする必要があります。

for($i=0 ; $i < 5; $i++)
{ echo "i = $i  and ";
  if($i>0)  $start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+1);
  echo date('Y-m-d',$start_date)."<br /><hr />";
}
于 2011-08-21T01:17:22.337 に答える
2

正常に動作しています。各反復で年に増分番号を追加しています。

i = 0 and 2011-08-21 // 2011 + 0
i = 1 and 2012-08-21 // 2011 + 1
i = 2 and 2014-08-21 // 2012 + 2
i = 3 and 2017-08-21 // 2014 + 3
i = 4 and 2021-08-21 // 2017 + 4

あなたはどちらかすべきです

  • +1+$1各反復の年ではなく
  • または$start_date各反復で上書きしない

更新(上書きなし)

for($i=0 ; $i < 5; $i++)
{
    echo "i = $i  and ";

    // $new_date holds the updated date without overwriting
    $new_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);

    echo date('Y-m-d', $new_date)."<br /><hr />";
}
于 2011-08-21T01:21:28.627 に答える
1

次の行

$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);

する必要があります

$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+1);

そうしないと、開始日が毎回変更されるため、日付の年が 1、2、3、4 ずつ増加します。

于 2011-08-21T01:17:31.393 に答える