从1日到1日生成月度日期

时间:2017-06-02 01:20:27

标签: php date

以下代码将为每个月和每月生成日期。如何列出截至下个月第一天的日期......

例如1月1日至2月1日,5月1日至6月1日等等

<?php

$month = "01";
$year = "2017";

$start_date = "01-".$month."-".$year;
$start_time = strtotime($start_date);

$end_time = strtotime("+1 month", $start_time);

echo "<table border='1'>";

for($i=$start_time; $i<$end_time; $i+=86400)
{
$list = date('Y-m-d-D', $i);
echo "<tr><td>";
echo $list;
echo "</td><td> </td></tr>";

}

echo "</table>";

?>

1 个答案:

答案 0 :(得分:1)

首先创建一个函数,这样您就可以再次使用它而无需重复代码。阅读里面的评论,看看每行的作用。

<?php

function genMonthTable($month, $year){
    /* Get days in month */
    $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);

    /* Add 1 extra day to get first day of the next month */
    $days+=1;

    /* Instantiate DateTime object */
    $date = new DateTime();

    /* Set date */
    $date->setDate($year, $month, 1);

    /* Create table */
    echo "<table style='border: 1px solid black;'><tbody>";

    /* Loop table rows */
    for($i = 1; $i <= $days; $i++){
        echo "<tr><td>";
        echo $date->format('Y-m-d');
        echo "</td></tr>";

        /* Increate date by 1 day */
        $date->modify('+1 day');
    }

    /* Finish table */
    echo "</tbody></table>";

    /* Unset DateTime object */
    unset($date);
}

/* Generate table for Januari 2017 */
genMonthTable(1, 2017);

/* Generate table for May 2017 */
genMonthTable(5, 2017);

?>