Как сделать массив который давал бы запись вычитывающее 30 минут?

Мне нужно сделать следующее, есть начало времени и конец. Нужен массив который делала например
15:00-15:30
15:30-16:00
16:00-16:30
И так далее и до конца времени который указывается. Как я пробовал
$date_to = strtotime('2018-05-03 23:59:59');
$date_from = strtotime('2018-05-03 00:00:00');
for ($i = $date_from; $i <= $date_to; date('H:i', strtotime($i.' +30 min'))){
     $dinner = date('H:i', strtotime($i.' +30 min'));
     $aDinner[] .= $i.'-'.$dinner;
}

Только получается бесконеный цикл и он никогда не заканчивается и постоянна одна и та unix время 1525294800. Как мне быть?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
BoShurik
@BoShurik
Symfony developer
$from = new \DateTime('2018-05-03 00:00:00');
$to = new \DateTime('2018-05-03 23:59:59');

$period = new \DatePeriod($from, new \DateInterval('PT30M'), $to);

$result = [];
foreach ($period as $dateTime) {
    $dinner = clone $dateTime;
    $dinner->add(new \DateInterval('PT30M'));

    $result[] = $dateTime->format('H:i') . ' - ' . $dinner->format('H:i');
}

var_dump($result);
Ответ написан
Комментировать
it_monk
@it_monk
Разработчик в oncloud.ru
$date_to = strtotime('2018-05-03 23:59:59');
$date_from = strtotime('2018-05-03 00:00:00');
for ($i = $date_from; $i <= $date_to; $i += 60 * 30){
     $aDinner[] = date('H:i', $i) . '-' . date('H:i', $i + 60 * 30);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы