2015-05-20 2 views
0

У меня есть форма, что пользователь должен заполнить два dates.I хочет отобразить даты между этими выбранными датами, какПоказать даты между двумя датами

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

Что ошибка вы получаете? Какой результат вы получаете? –

+0

@Answers_Seeker Я обновляю свой вопрос – rai

ответ

1

Согласно PHP документ DatePeriod реализует интерфейс Traversable. Таким образом, вы можете использовать его как массив и петлю с foeeach над ним:

/** @var DateTime[] $dateRange */ 
$dateRange = new DatePeriod(...); 

foreach($dateRange as $date) { 
    $date->format(...); 
} 

Что не упоминается в официальном PHP документе является то, что вы получите «массив» DateTime объектов.

0

Вам необходимо использовать format. Как это:

echo $date->format("Ymd") . "<br>";

Смежные вопросы