Заполните пропуски между двумя временами с помощью PHP - PullRequest
2 голосов
/ 18 августа 2011

Я должен написать цикл, который должен начинаться и заканчиваться между двумя раза.Я знаю, что есть много способов убрать этого кота из кожи, но я бы хотел, чтобы к этой функции подходили настоящие программисты.

По сути, у меня, например, среда, которая открывается в 6:00 вечера и закрывается в 10: 30:00.

Я хочу написать цикл, который даст мне таблицу со всеми промежутками времени между этими двумя с интервалом в 15 минут.

Итак, я в основном хочу построитьтаблица из одного столбца, где каждая строка имеет вид

6:00pm
6:15pm
7:15pm

и т. д.

Моими двумя переменными для подачи этой функции будут время открытия и время закрытия.Теперь не обвиняйте меня в публикации "напишите мой код для меня".Я с радостью предоставлю вам взломанное решение по запросу, я просто хотел бы увидеть, как кто-то с реальным опытом может создать эту функцию.

Спасибо:)

Ответы [ 4 ]

4 голосов
/ 18 августа 2011
$start = new DateTime("2011-08-18 18:00:00");
$end = new DateTime("2011-08-18 22:30:00");
$current = clone $start;
while ($current <= $end) {
    echo $current->format("g:ia"), "\n";
    $current->modify("+15 minutes");
}

Попробуйте на Codepad: http://codepad.org/JwBDOQQE

3 голосов
/ 18 августа 2011

PHP 5.3 ввел класс специально для этой цели, DatePeriod.

$start    = new DateTime("6:00pm");
$end      = new DateTime("10:30pm");
$interval = new DateInterval('PT15M');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $time) {
    echo $time->format('g:ia'), PHP_EOL;
}

echo $end->format('g:ia'); // end time is not part of the period
0 голосов
/ 18 августа 2011

Я бы пошел с функциями DateTime и увеличивал время на 15 минут каждый оборот цикла, пока текущее время меньше, чем время окончания.

РЕДАКТИРОВАТЬ: как пользователь576875 опубликовал

0 голосов
/ 18 августа 2011
$start = strtotime('2011-08-11 18:00:00');

for ($i = 0; $i < 20; $i++) {
   echo date('g:ia', $start + ($i * (15 * 60))), '<br>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...