以下は、29、30、および 31 を除くすべての開始日で正常に機能するスクリプトです。
$startdate='2010-01-30';
$enddate='2011-01-30';
while ($startdate <= $enddate)
{
echo date('Y-m-d', $startdate ) . "\n";
$startdate = strtotime('+1 month', $startdate);
}
試す
<?php
$startdate = strtotime('2010-01-29');
$enddate = strtotime('2011-01-31');
$inc = 1;
while($startdate <= $enddate )
{
$date = date("t", $startdate);
$numbersofdays = date('d',$startdate);
$incDate = ($date - $numbersofdays) + 1;
if ($startdate == $enddate || $inc==1) {
echo date('Y-m-d',$startdate). PHP_EOL;
} else {
echo date('Y-m-t',$startdate). PHP_EOL;
}
$startdate = strtotime("+".$incDate." days", $startdate );
$inc++;
}
?>