0

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

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);
4

1 回答 1

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;
}  

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

于 2013-10-08T20:05:35.507 回答