如何打印两个日期之间的所有日期

ank*_*gle 2 php date

下面是我的PHP代码,显示两个日期之间的所有日期..但不能正常工作...

fromdate = 20-04-2015
todate =   25-05-2015
Run Code Online (Sandbox Code Playgroud)

所以我的代码只显示 20,21,22,23,24,25

但我需要这两个月之间的所有日子.

预期产出

20-04 21-04 22-04 23-04 24-04 25-04 26-04 27-04 28-04  ......upto 25-05
Run Code Online (Sandbox Code Playgroud)

下面是我的代码..

 <?php
    $startdate = $_POST['fromdate'];
    $enddate = $_POST['todate'];
    $start = date('d', strtotime($startdate));
    $end=date('d', strtotime($enddate));
    ?>  

    <?php   for ($x = $start; $x <= $end; $x++) { ?>
        <th width="58%"><?php echo $x; ?></th>
        <?php } ?>
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 7

建议不要使用strtotime()date()遍历日期,因为它最多是hackish.使用DateTime迭代日期改为:

$start    = new DateTime('20-04-2015');
$end      = (new DateTime('25-05-2015'))->modify('+1 day');
$interval = new DateInterval('P1D');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("d-m") . "<br>\n";
}
Run Code Online (Sandbox Code Playgroud)

Demo

对于PHP <5.4(echo phpversion();),它不支持数组解除引用:

Demo

上面的代码DateTime为开始和结束日期创建对象.我们必须在结束日期添加一天,因为它稍后将不会包含在我们的循环中.然后它创建一个DateInterval对象来表示一天的增量和一个DatePeriod包含它的对象.然后循环遍历每个日期并以您期望的格式回显日期.