C'est une question de logique ca, pas de programmation.
Si comme moi tu es plus visuel, tu prends une feuille de papier, un crayon et tu dessines tes deux intervalles :
Ca te donne 4 cas de chevauchement
1 2 3 4 5 6 7 8 9 10 11
| t1---------------t2
t3------------------t4
t1---------------t2
t3------------------t4
t1---------------t2
t3-----------------------------------t4
t1-------------------------------t2
t3---------------t4 |
mais tu remarques qu'ils se resument a deux conditions :
if ($t4 > $t1 && $t3 < $t2)
La durée total de deux plages se chevauchant est par contre effectivement le dernier qui fini moins le premier qui commence :
max($t4,$t2) - min($t3,$t1)
Partager