为每个月添加正确的天数

时间:2013-10-07 00:04:45

标签: php calendar

使用以下功能,我可以显示两个日期之间的年份和月份,但如何在每个月内将每个月的正确日期添加为另一个数组?我不能手动添加天数,因为我需要它来计算闰年等。

function yearMonth($start_date, $end_date)
{
    $begin = new DateTime( $start_date );
    $end = new DateTime( $end_date);
    $interval = new DateInterval('P1M'); // 1 month interval

    $period = new DatePeriod($begin, $interval, $end);

    foreach ( $period as $dt )
        $years[$dt->format( "Y" )][] = $dt->format( "F" );

    return $years;
}

$list  =  yearMonth("2007-03-24", "2009-06-26");
var_dump($list);

1 个答案:

答案 0 :(得分:0)

由于没有人回答:

function yearMonth($start_date, $end_date)
{
$begin = new DateTime( $start_date );
$end = new DateTime( $end_date);
$interval = new DateInterval('P1D'); // 1 month interval

$period = new DatePeriod($begin, $interval, $end);

$lastMonth = null;
$lastYear = null;
$aResult = array();
foreach ( $period as $dt )
{
    if ($dt->format('Y') != $lastYear)
    {
        $lastYear = $dt->format('Y');
    }
    if ($dt->format('F') != $lastMonth)
    {
        $lastMonth = $dt->format('F');
    }
    if (!isset($aResult[$lastYear]))
    {
        $aResult[$lastYear] = array();
    }
    if (!isset($aResult[$lastYear][$lastMonth]))
    {
        $aResult[$lastYear][$lastMonth] = array();
    }
    $aResult[$lastYear][$lastMonth][] = $dt->format('d');
}

return $aResult;
}  

另一方面,我计划以日期之间的年,月和日的表格格式创建一种甘特图样式的平面布局。你认为这是一种合适的产生方式吗?或者,还有更好的方法?