指定された2つの日付の間の年と月のリストを取得したい
これが私のコードです
function yearMonth($start_date, $end_date)
{
$years = array();
$base = 0 ;
while(($start_date) < $end_date)
{
$y = date('Y' , $start_date);
// if its the original start_time check the month from
//current date else get the first day and month in that year
$base = ($base == 0 ) ? $start_date : strtotime("{$y}-1-1");
for($i = 1 ; $i <= 12 ; $i++ )
{
if($base > $end_date)
break;
$years[date("Y", $start_date)][] = date("F" , $base);
$base += 2629743.83;
}
$base += $start_date += 31556926 ;
}
return $years;
}
$list = yearMonth(strtotime("2010-11-8") , strtotime("2012-11-11") );
var_dump($list);
だからここに問題があります
$base = ($base == 0 ) ? $start_date : strtotime("{$y}-1-1");
ここでstart_date
は、関数に渡したオリジナルであるかどうかを確認します。その年の月を見つけるためのベースをstart_dateに設定し、オリジナルでない場合は、ベースをその年の最初の月に設定します。
今、私たちは私の問題に到達します
for($i = 1 ; $i <= 12 ; $i++ )
ここでは、その年に12か月あると想定していますが、元のstart_dateの場合は、それより少なくなる可能性があります。
特定の日付の年の残りの月を計算するにはどうすればよいですか?
別の問題はここにあります
for($i = 1 ; $i <= 12 ; $i++ )
{
if($base > $end_date)
break;
$years[date("Y", $start_date)][] = date("F" , $base);
$base += 2629743.83;
}
毎月2629743.83秒だと思いますが、うるう年のせいであまり正確ではありません。
これを行うためのよりクリーンな方法はありますか?