Очень сложно описать задачу, которую мне нужно решить, но я постараюсь.
Есть промежуток времени (основной): предположим, это начало и конец дня, который по умолчанию красный.
Есть массив (А) небольших промежутков времени, которые помещаются в этот первый промежуток. Они могут быть зелеными и красными.
Нужно наложить этот массив на основной промежуток и получить другой массив (В) промежутков, соблюдая несколько правил:
Для большей ясности происходящего решил нарисовать диаграмму:
Почему спрашиваю: возможно есть готовые инструменты, библиотеки или оптимальные алгоритмы, которые помогут мне решить эту задачу. Не хочу писать костыли и велосипеды.
Зачем это нужно: красный и зеленый цвета означают занятое и свободное время. Цветами обозначил для упрощения.
Дано: PHP. Оперировать можно чем угодно: объектами DateTimeInterface, объектами League\Period\Period (который тоже в проекте активно используется) или обычными TimeStamp метками. Я там дальше разберусь, что с этим делать.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники