как создавать ежемесячные дни с PHP?

Я пытаюсь создать дни текущего месяца, как это

$year = date('Y'); $month = date('m'); $dayCount = cal_days_in_month(CAL_GREGORIAN,$month,$year); for ($i = 1; $i <= $dayCount; $i++) { $tree_data->data[$i] = $year."-".$month."-".$i; } print "<pre>"; print_r($tree_data); 

который дает мне результат вроде

 stdClass Object ( [data] => Array ( [1] => 2011-12-1 [2] => 2011-12-2 [3] => 2011-12-3 [4] => 2011-12-4 [5] => 2011-12-5 [6] => 2011-12-6 [7] => 2011-12-7 [8] => 2011-12-8 [9] => 2011-12-9 [10] => 2011-12-10 [11] => 2011-12-11 [12] => 2011-12-12 [13] => 2011-12-13 [14] => 2011-12-14 [15] => 2011-12-15 [16] => 2011-12-16 [17] => 2011-12-17 [18] => 2011-12-18 [19] => 2011-12-19 [20] => 2011-12-20 [21] => 2011-12-21 [22] => 2011-12-22 [23] => 2011-12-23 [24] => 2011-12-24 [25] => 2011-12-25 [26] => 2011-12-26 [27] => 2011-12-27 [28] => 2011-12-28 [29] => 2011-12-29 [30] => 2011-12-30 [31] => 2011-12-31 ) ) 

моя проблема в том, что я хочу получить 1 – 9 дней, как

 2011-12-01, 2011-12-02 etc... 

любая идея, как получить такой вывод?

Solutions Collecting From Web of "как создавать ежемесячные дни с PHP?"

Вы можете использовать sprintf .

 sprintf('%1$02d', $i); 

Другой подход может заключаться в использовании объекта DateTime :

 $aDates = array(); $oStart = new DateTime('2011-12-01'); $oEnd = clone $oStart; $oEnd->add(new DateInterval("P1M")); while($oStart->getTimestamp() < $oEnd->getTimestamp()) { $aDates[] = $oStart->format('Ym-d'); $oStart->add(new DateInterval("P1D")); } 

Этого должно быть достаточно. 🙂

 $year = date('Y'); $month = date('m'); $dayCount = cal_days_in_month(CAL_GREGORIAN,$month,$year); for ($i = 1; $i <= $dayCount; $i++) { $tree_data->data[$i] = $year."-".$month."-".str_pad($i, 2, "0", STR_PAD_LEFT); } $ret = implode(", ", $tree_data->data); 

Проверьте str_pad ().

http://php.net/manual/en/function.str-pad.php

 $year = date('Y'); $month = date('m'); $dayCount = cal_days_in_month(CAL_GREGORIAN,$month,$year); for ($i = 1; $i <= $dayCount; $i++) { $tree_data->data[$i] = $year."-".$month."-".(($i < 10)?'0'.$i:$i); } print "<pre>"; print_r($tree_data); 

Ну, как и другие ответы, вы можете добавить 0 в день условно, или вот еще один способ сделать все на всякий случай.

  $startMonth = date('Ym-01'); $endMonth = date('Ym-t'); $i = 0; while(strtotime($startMonth) <= strtotime($endMonth)){ $tree_date->date[$i] = $startMonth; $startMonth = date('Ym-d', strtotime($startMonth.' +1 days')); $i++; } print_r($tree_date);