Podziel przedział czasu na kawałki według innych zakresów czasu
Mam skomplikowane zadanie, które przez kilka dni uderzam głową o ścianę. Wypróbowałem około 4 różnych podejść, jednak każde wydaje się utknąć i staje się niezwykle frustrujące.
Mam przedział czasowy. Na przykład od 14:30 do 18:30. Zastanów się nad tym przedziałem czasowym czyjejś zmiany pracy. W tym przedziale czasowym stwierdzają, że nie mogą pracować od 15:30 do 16:30 i od 17:30 do 18:30. Muszę zmodyfikować czasy początkowe i końcowe oryginalnej zmiany, aby usunąć sprzeczne zmiany.
Oryginalna tablica przesunięć wygląda tak:
$original_shift[0]['start'] = '14:30:00';
$original_shift[0]['end'] = '18:30:00';
Zakresy czasu, które mają zostać usunięte z pierwotnego przesunięcia, wyglądają tak:
$subshift[0]['start'] = '15:30:00';
$subshift[0]['end'] = '16:30:00';
$subshift[1]['start'] = '17:30:00';
$subshift[1]['end'] = '18:30:00';
Oto wizualizacja:
Więc zasadniczo potrzebuję mojej pierwotnej zmiany, aby wyglądać tak, gdy skończę:
$original_shift[0]['start'] = '14:30:00';
$original_shift[0]['end'] = '15:30:00';
$original_shift[1]['start'] = '16:30:00';
$original_shift[1]['end'] = '17:30:00';
Niektóre komplikacje, które również muszę wziąć pod uwagę to:
Te przedziały czasowe mogą być dowolne (nie ograniczone do pół godziny, tak jak w moim przykładzie), jednakże będę wiedział ze 100% pewnością, że niedostępne zakresy czasowe zawsze będą się rozpoczynać i kończyć między początkiem początkowej zmiany a początkiem czasy końcowe.
Czasy niedostępne mogą zwiększać i / lub wydłużać czas całej pierwotnej zmiany.
Nie szukam kogoś, kto „napisałby mój kod” tak bardzo, jak szukam kogoś, kto zajmował się czymś takim w przeszłości i może mieć pewien wgląd w to, jak to osiągnęli.