2011-12-23 3 views
0

Imが私にPHPで毎月の日を生成するには?

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 
     ) 

) 

私の問題のような出力を提供します。この

$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); 

のように、現在の月の日数を生成しようとしている私は1を取得したいです - 9日のように

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

どのようにそのような出力を得るために任意のアイデア?

答えて

6

あなたは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('Y-m-d'); 
    $oStart->add(new DateInterval("P1D")); 
} 
+0

+1のDateTimeの提案。 – liquorvicar

+0

確かに、非常にchique –

+0

ありがとうたくさん... –

1
$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

三元についてはわかりません。車輪を改造しているだけではありませんか?なぜstr_padを使用しないのですか? – liquorvicar

3

これは十分であるべきです。 :)

$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); 
+0

STR_PAD_LEFTと私は必要な出力を得た –

+0

編集、それは本当に私の側で間違いだった。 – NoLifeKing

1

だけでなく、他の回答あなたは条件付きで一日に0を追加したり、ここで念のために物事を行くための別の方法であることができます示唆しています。

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

    print_r($tree_date); 
+0

$ endMonth = date( 'Y-m-00'、strtotime( '+ 1 month')); $ endMonth = date( 'Y-m-t')を使うことができます。 – liquorvicar

関連する問題