我正在尝试在其他两个日期之间打印日期。这是我的代码:
$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日。我不知道出了什么问题。有人能帮助我吗?
答案 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/>";
}