Нужна логика о том, как реализовать эту проблему - PullRequest
0 голосов
/ 29 мая 2019

Я хочу реализовать эту логику в PHP CodeIgniter.

У меня есть варианты времени регистрации, которые с интервалом в 30 минут с 00:00 до 23:30.например, время может быть 00:00, 00: 30, 01:00, 01:30, 02:00, 02:30, 03: 00, 03:30 ..... 23: 30.

Из-за 2-часового окна бронирования система будет отображать ограниченное количество вариантов времени регистрации, и поэтому клиент не может видеть все наши варианты времени регистрации.Он будет работать на основе текущего времени системы.Клиент увидит варианты времени регистрации от ближайшего варианта времени регистрации от его текущего времени до следующих 2 часов.Например, текущее время 00:50.Ближайшая регистрация заезда производится с 01:00, а 2 часа с 01:00 - с 03:00.Следовательно, клиент увидит только следующие варианты времени регистрации, которые будут 5 вариантами в любое время суток;01:00, 01:30, 02: 00,02: 30,03: 00 и т. Д.

Кажется, я не могу перевести это на PHP.

1 Ответ

0 голосов
/ 30 мая 2019

Таким образом, вам нужно по существу проанализировать текущее время в часах и минутах, а затем с помощью DateInterval перейти к ближайшему (следующему / прямому) получасу или часу. Это становится вариантом 1. Оттуда нужно генерировать следующие 4 опции, равные 2 часам от первой доступной опции. Мы делаем это с помощью цикла for и добавляем 30m каждую итерацию до тех пор, пока все параметры не будут завершены.

<?php

function check_in_options($time) {

    $dt = new DateTime($time);

    $minutes = $dt->format('i');
    $hour = $dt->format('H');

    $interval = $minutes >= 30 ? 60 - $minutes : 30 - $minutes;
    $dt->add(new DateInterval("PT{$interval}M"));

    $options[] = $dt->format('H:i');

    for ($x = 1; $x <= 4; $x++) {
        $options[] = $dt->add(new DateInterval("PT30M"))->format('H:i');
    }

    return $options;

}

$time = '00:50';

$options = check_in_options($time);

echo '<pre>';
print_r($options);

Результат:

Array
(
    [0] => 01:00
    [1] => 01:30
    [2] => 02:00
    [3] => 02:30
    [4] => 03:00
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...