2012-01-24 16 views
-1
$start_date = '2012-01-01'; 
$end_date = '2012-12-31'; 
$total_days = round(abs(strtotime($end_date) - strtotime($start_date))/86400, 0) + 1; 

if ($end_date >= $start_date) 
{ 
    for ($day = 0; $day < $total_days; $day++) 
    { 
    echo "<br />" . date("Y-m-d", strtotime("{$start_date} + {day} days")); 
    } 
} 

今は '1969-12-31'が繰り返し印刷されています。予想される出力は次のようになります。PHPで日付の範囲を取得するにはどうすればよいですか?

2012-01-01 
2012-01-02 
2012-01-03 
... 
2012-12-30 
2012-12-31 

答えて

1

コード上のあなたは1つの余分な文字で動作します - あなたは、この行に$を逃した:

echo "<br />" . date("Y-m-d", strtotime("{$start_date} + {$day} days")); 
//              ^This was missing 
+0

ありがとうこれはうまくいった。 –

+0

@AllisonChristiansen:それを答えとして受け入れるべきです。 – Ryan

+0

ええ、私は最初の5分間私をさせてくれないことを知っています、そして、私は他のことをやり続けました。私に思い出させてくれてありがとう。 –

0
<?php 

$start_date = '2012-01-01'; 
$end_date = '2012-12-31'; 
$total_days = round(abs(strtotime($end_date) - strtotime($start_date))/86400, 0) + 1; 

if ($end_date >= $start_date) 
{ 
    for ($day = 0; $day < $total_days; $day++) 
    { 
    echo "<br />" . date("Y-m-d", strtotime("{$start_date} + {$day} days")); 
           //  You missed the $ here^
    } 
} 
6

私は一緒に(DatePeriodクラスを使用しますDateTimeDateInterval):

$start_date = '2012-01-01'; 
$end_date = '2012-12-31'; 

$start = new DateTime($start_date); 
$end  = new DateTime($end_date); 
$interval = new DateInterval('P1D'); // 1 day interval 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $day) { 
    // Do stuff with each $day... 
    echo $day->format('Y-m-d'), "\n"; 
} 
関連する問題