我想获取两个给定日期之间的年月列表
这是我的代码
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 秒,但它不是很准确,因为闰年
有没有更清洁的方法来做到这一点?