每月的月份和日期列表 - 分为单独的div

时间:2015-02-04 11:59:02

标签: php

我试图获取每个月的月份和日期列表f.e。

January
01 02 03 04 05 (...)
February 
01 02 03 04 05 (...)

我喜欢每个月用div包裹,这将有一个CSS课程。

我怎么能做到这一点?我已尝试使用下面的代码,但它会返回天数列表,而不会将它们分成不同的月份:/

$start_date = '2015-01-01';
$start_day = date('z', strtotime($start_date));
$days_in_a_year = date('z', strtotime('2015-12-31'));

$number_of_days = ($days_in_a_year - $start_day) +1 ;
for ($i = 0; $i < $number_of_days; $i++) {
    $date = strtotime(date("Y-m-d", strtotime($start_date)) . " +$i day");
    echo date('d-m-y F - l', $date) .'<br />';
}

2 个答案:

答案 0 :(得分:1)

您可以使用cal_days_in_month()功能:

$year = 2015;

for($month=1; $month<=12; $month++){
    // Show month name
    $monthName = date('F', strtotime($year.'-'.$month.'-01'));
    echo "<div>$monthName: ";

    // Calculate days in given month
    $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);

    // Print days
    for($i = 1; $i <= $days; $i++)
    { echo "$i "; }

    // Close div
    echo '</div>';
}

编辑:没有额外阵列的解决方案。

答案 1 :(得分:0)

可能你应该首先迭代几个月,然后在内循环中迭代几天。像这样:

$year = '2015';

for($month = 1; $month <= 12; $month++) {
    $month_name = date('F', strtotime($year . '-' . $month . '-01'));
    echo '<div class="month-wrap">';
    echo $month_name;
    $days_in_month = date('t', strtotime($year . '-' . $month . '-01'));

    for($day = 1; $day <= $days_in_month; $day++)
    {
        echo '<div class="day-wrap">' . $day . '</div>';
    }
    echo '</div>';
}