Отдельный групповой массив на основе разницы даты и времени

Мне нужен временной интервал как «ОТ ДАТЫ» И «ДО ДАТЫ» из следующего массива.

в основном я хочу проверить, есть ли 2-часовой разрыв, а затем создать новую группу как с даты и до даты.

         $finaltime = array();
        for($i=0; $i<count($timeslots);$i++){

            $startdate = $timeslots[$i];

            $result_set = $this->Calendar_model->AllEventTimeSlot($user,$startdate,$conver_end_date);
            echo $result_set;
            if ($result_set == 0){
                $finaltime[] = $timeslots[$i];
            }

        }

I have an array as follows:

Array
(
    [0] => 2019-04-01 00:00:00
    [1] => 2019-04-07 06:00:00
    [2] => 2019-04-07 08:00:00
    [3] => 2019-04-07 10:00:00
    [4] => 2019-04-07 12:00:00
    [5] => 2019-04-07 14:00:00
    [6] => 2019-04-07 16:00:00
    [7] => 2019-04-07 18:00:00
    [8] => 2019-04-07 20:00:00
    [9] => 2019-04-07 22:00:00
    [10] => 2019-04-08 00:00:00
    [11] => 2019-04-08 02:00:00
    [12] => 2019-04-08 04:00:00
    [13] => 2019-04-08 06:00:00
    [14] => 2019-04-08 08:00:00
    [15] => 2019-04-08 10:00:00
    [16] => 2019-04-08 12:00:00
    [17] => 2019-04-08 14:00:00
    [18] => 2019-04-08 16:00:00
    [19] => 2019-04-08 18:00:00
    [20] => 2019-04-08 20:00:00
    [21] => 2019-04-08 22:00:00
)

Ожидаемый результат :

[0] => 2019-04-01 00:00:00 игнорировать это, потому что не в 2-часовой интервал.

Array
(
    [0] => Array
        (
            [formdate] => 2019-04-07 06:00:00
            [todate] => 2019-04-07 06:00:00
        )

    [1] => Array
        (
            [formdate] => 2019-04-07 10:00:00
            [todate] => 2019-04-07 12:00:00
        )

)
                    ... and soo on 

Что вы уже пробовали?

BenM 09.04.2019 12:43

Чтобы помочь вам с вашей конкретной проблемой, нам нужны дополнительные сведения, которые точно подчеркнут, где вы застряли.

jowey 09.04.2019 12:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой способ - использовать объект DateTime в PHP.

$finaltime = [];
foreach($timeslots as $key => $value){
    //check for another date in the future to compare with
    if (isset($timeslots[$key+1])){
        $start = new DateTime($value);
        $end = new DateTime($timeslots[$key+1]);
        $diff  = $start->diff($end);
        // I've excluded seconds so just checking for 2 hours and 0 minutes
        if ($diff->format("%H:%I") == "02:00"){
            $finaltime[] = ['fromdate' => $value, 'todate' => $timeslots[$key+1]];
        }
    }
}

Если вы сравниваете разные даты, вам нужно будет расширить это $diff->format("%H:%I"), чтобы включить разницу в днях.

В противном случае 2019-08-01 06:00:00 будет соответствовать 2019-08-02 08:00:00.

Другие вопросы по теме