在PHP上打印两个其他日期之间的日期

时间:2017-01-25 15:23:24

标签: php date strtotime

我正在尝试在其他两个日期之间打印日期。这是我的代码:

$begin = date("d/m/y");
$end = date("d/m/y", strtotime("+1 month"));

$i = 0;
while( strtotime($begin) <= strtotime($end) ){

    echo "$begin\n";

    $i++;
    $begin = date("d/m/y", strtotime("+$i day") );

}

您可以在此处执行相同的代码: http://sandbox.onlinephpfunctions.com/code/34c4b721553038f585806798121941bee0c66086

出于某种原因,此代码仅打印2017年2月25日至2017年1月31日期间的日期,而不是2017年2月25日和2017年2月25日。我不知道出了什么问题。有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

strtotime()不支持d/m/y格式的日期。它将这些日期视为m/d/y

要修复代码,请在前两行使用Y-m-d格式。

在旁注中,我建议使用\DateTime类来操作日期而不是字符串和整数。在此处阅读更多内容:https://paulund.co.uk/datetime-php

答案 1 :(得分:2)

<?php
error_reporting(-1);
ini_set('display_errors', true);

$begin = new DateTime();
$end = (new DateTime())->modify('+1 month');
$interval = DateInterval::createFromDateString('1 day');

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

foreach ($period as $date) {
    echo $date->format('d/m/y')."<br/>";
}