2016-03-28 8 views
2

2016年1月1日から2016年1月2日までの1月を開始したい場合はどうすればいいですか?月のデータが間違っている

https://3v4l.org/uRRfU

function countDaysForChoosenYears(int $year):int 
    { 
     $att = []; 
     for ($i = 1; $i <= 12; $i++) { 
      $att[] = cal_days_in_month(CAL_GREGORIAN, $i, $year); 
     } 
     $att = array_sum($att); 
     return $att; 
    } 

    $YearMonthDayStructure = []; 

    $Date = new DateTime('2016-01-01'); 


    for ($i = 1; $i <= countDaysForChoosenYears(2016); $i++) { 

     $monthName = $Date->format('F'); 
     $yearNumber = $Date->format('Y'); 

     $YearMonthDayStructure[$yearNumber][$monthName][$Date->format('d')] = $Date->add(new DateInterval('P1D'))->format('Y-m-d'); 

    } 

    print_r($YearMonthDayStructure); 
+1

https://3v4l.org/p2518 – Federkun

+0

おかげさまで...それは別の注文です。 – Demolog

答えて

1

あなたがこれまでにP1Dを追加するループを入力してください非常に最初の時間。したがって、最初の日付は2月1日に終わります。なぜなら$ Date-> addを使ってその行にP1Dを1月1日に追加したからです。変数を使用した後に '++'が発生する$ x ++のようなものではありません。 addを実行し、追加されたP1Dを使用して$ YearMonthDayStructure値に結果を返します。

関連する問題