Je voudrais savoir comment faire coïncider les plages horaires de dates avec d'autres plages de dates. La particularité est qu'une plage de dates peut avoir plage de temps se chevauchant deux jours consécutifs.PHP: Sélection de plages de dates chevauchantes avec chevauchement de plages horaires
Par exemple, j'ai une réservation récurrente les 01/01 et 02/01 commençant à 20h00 et finissant le lendemain à 02h00.
Premier jour:
$start = '2017-01-01 20:00';
$end = '2017-01-02 02:00';
Deuxième jour:
$start = '2017-01-02 20:00';
$end = '2017-01-03 02:00';
Maintenant, je voudrais savoir comment obtenir des réserves qui se chevauchent cette réserve.
Remarque: Toutes les réservations peuvent avoir ou non une période de chevauchement. Par exemple, d'un point de vue PHP, j'ai les réserves suivantes: Les dates et les heures sont représentées ici sous forme de chaîne pour la lisibilité. En réalité, ils sont DateTime.
//The reservation
$reservation= array(
array(
'day' => '2017-01-01',
'time_range' => array('20:00', '23:59')
),
array(
'day' => '2017-01-02',
'time_range' => array('00:00', '02:00')
),
);
//Other reservations
$reservations= array(
//Reservation doesn't overlap
array(
'day' => '2017-01-01',
'time_range' => array('18:00', '19:00')
),
//Reservation overlaps
array(
'day' => '2017-01-01',
'time_range' => array('21:00', '22:00')
),
//Reservation overlaps
array(
array(
'day' => '2017-01-01',
'time_range' => array('23:00', '23:59')
),
array(
'day' => '2017-01-02',
'time_range' => array('00:00', '01:00')
),
),
...
);
Merci!
Avez-vous essayé quelque chose? – ishegg
@ishegg Oui j'ai essayé de comparer chaque intervalle de temps de chaque jour de la réservation à chaque intervalle de temps de chaque jour de toutes les autres réservations par 'startA startB'. Mais je ne sais pas s'il n'y a pas une meilleure solution. –
Tsounabe