我有一个表单,用户应填写两个日期。我想显示这些选定日期之间的日期,如
June 11
June 12
June 13
June 14
June 15
Jun 16
Jun 17
在我的action.php中
$dateTo = $r->getParameter("date_to", date('Y-m-d'));
$dateFrom = $r->getParameter("date_from", date('Y-m-d', strtotime('7 days ago', strtotime($dateTo))));
$dateRange = new DatePeriod(DateTime::createFromFormat('Y-m-d',$dateTo), new DateInterval('P1D'), DateTime::createFromFormat('Y-m-d',$dateFrom));
然后在我的模板中,我尝试了
foreach $dateRange as $date {echo $date}
显示这些日期的正确方法是什么? var_dump输出如
object(DatePeriod)[62]
public 'start' =>
object(DateTime)[21645]
public 'date' => string '2015-05-20 16:56:21' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Asia/Manila' (length=11)
public 'current' => null
public 'end' =>
object(DateTime)[21656]
我试过
<?php foreach($dateRange as $r):?>
<?php echo $r->format('Y-m-d') ?>
<?php endforeach ?>
但我的表格中没有显示任何内容
答案 0 :(得分:1)
根据PHP文档DatePeriod
实现Traversable
接口。因此,您可以像使用数组一样使用它,并在其上使用它:
/** @var DateTime[] $dateRange */
$dateRange = new DatePeriod(...);
foreach($dateRange as $date) {
$date->format(...);
}
官方PHP文档中没有提到的是你得到一个&#34;数组&#34; DateTime
个对象。
答案 1 :(得分:0)
您需要使用format
。
像这样:
echo $date->format("Ymd") . "<br>";