下面是我的PHP代码,显示两个日期之间的所有日期..但不能正常工作......
fromdate = 20-04-2015
todate = 25-05-2015
所以我的代码只显示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
下面是我的代码..
<?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 } ?>
答案 0 :(得分:6)
建议不要使用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";
}
对于PHP&lt; 5.4(echo phpversion();
),它不支持array dereferencing:
以上代码为开始日期和结束日期创建DateTime
个对象。我们必须在结束日期添加一天,因为它稍后将不会包含在我们的循环中。然后它创建一个DateInterval
对象来表示一天的增量,并创建一个DatePeriod
对象来包含它。然后循环遍历每个日期并以您期望的格式回显日期。