Пользователям разрешено выбирать время для доставки до времени закрытия магазина, которое может быть 1 час утра.
Список должен отображаться все время до 1 часа ночи, даже если это после полуночи.
пример 1: пользователь приходит на 18:00
он видит 18:00, 18:30, 19:00 and so on up until 00:30, 01:00
пример 2: пользователь приходит на 00:10
должен видеть
00:30, 01:00 not
01:00, 01:30, 02:00, 02:30 etc because after midnight has become a has become a new day/date.
Я получаю 30 минут времени интервалы между двумя временами - это нормально, если оба раза находятся в один и тот же день, например 17:00 and 23:00
Если время окончания больше полуночи, я не могу получить интервалы, поэтому 17:00 to 01:00
не дает никаких интервалов.
Я понимаю, что 01:00 - это другой день, но я не совсем уверен, как это исправить, используя Dynami c дата. Я продолжаю думать, что current day +1
будет хорошо, если только это не будет после осознания, тогда это будет дополнительный день, если это имеет смысл.
Вот мой код:
$timestamp = time() + 60*60;
$earliest = date("h:i ",$timestamp);
$period = new DatePeriod(
new DateTime($earliest),
new DateInterval('PT30M'),
new DateTime('01:00')
);
foreach ($period as $date) {
echo '<option value="">'.$date->format("H:i").'</option>';
}
Поскольку работает 24:00 в 00:00 я пытался 25:00, но это не сработало. Любая помощь приветствуется!
ОБНОВЛЕНИЕ: после приведенного ниже ответа применительно к динамической c дате, если я использую дату, такую как:
$start = date('Y-m-d H:i');
$startdate = date('Y-m-d');
$end = date('Y-m-d', strtotime($startdate . ' +1 day'))." 01:00";
$period = new DatePeriod(
DateTime::createFromFormat('Y-m-d H:i','2020-04-03 17:00'),
new DateInterval('PT30M'),
DateTime::createFromFormat('Y-m-d H:i','2020-04-04 01:00')
);
После полуночи добавляется еще один день, который проблематичен c.