Как вычесть время с помощью PHP?

#php #datetime

#php #datetime

Вопрос:

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

В качестве примера у меня есть следующий массив

 $array1 = [
            0 => [
                'start_hour' => 9,
                'start_minute' => 0,
                'end_hour' => 12,
                'end_minute' => 0
            ],
            1 => [
                'start_hour' => 13,
                'start_minute' => 0,
                'end_hour' => 18,
                'end_minute' => 0
            ]
        ];

 $array2 = [
            'start_hour' => 11,
            'start_minute' => 0,
            'end_hour' => 11,
            'end_minute' => 30
        ];
  

Теперь я хочу вычесть $array2 из $ array1.

Мой ожидаемый результат, как показано ниже:

  $result = [
            0 => [
                'start_hour' => 9,
                'start_minute' => 0,
                'end_hour' => 11,
                'end_minute' => 0
            ],
            1 => [
                'start_hour' => 11,
                'start_minute' => 30,
                'end_hour' => 12,
                'end_minute' => 0
            ],
            2 => [
                'start_hour' => 13,
                'start_minute' => 0,
                'end_hour' => 18,
                'end_minute' => 0
            ]
        ];
  

Любые решения или подсказки были бы оценены. Заранее благодарю.

Комментарии:

1. Что, если период времени в array2 не перекрывает ни один из периодов в array1?

2. Хотя вы можете запутаться в одном конкретном случае, обобщенное решение, вероятно, будет включать дерево интервалов .

3. Самый простой способ играть с разницей во времени — это хранить результаты time() и microtime(true) и управлять ими. используйте вычитание для различий. Преобразуйте его в текст только при выводе для пользователя.

4. Что вы уже пробовали до сих пор? Это выглядит как идеальный фиктивный проект для изучения TDD