Naïvement, je décomposerai le problème en trois parties (je suppose que la seconde date, la "cible", est dans la plage 9h-18h d'un jour ouvré) :
- Cas "simple" : la première et seconde datetime sont sur la même journée, on fait le diff. Sinon:
- Le temps entre le max(première datetime, première datetime fixée à 9h) et la fin de la journée de travail (0 si cette datetime n'est pas un jour ouvré, ou si le temps est négatif);
- Le temps entre le début de la journée de travail du jour de la seconde datetime et la seconde datetime;
- (18-9h) * nombre de jours ouvrés entre "lendemain minuit de première datetime" et "minuit de deuxième datetime".
[Edit: Pour le dernier point, on applique la même stratégie : si c'est la même semaine,c 'est "easy". Si c'est des semaines différentes, on calcule le max(0, nb jours du lendemain de la 1ere date jusqu'au vendredi inclus); puis le nb jours du lundi à la 2e date.]
Ce message a été modifié 1 fois.
Dernière modification : 8 février 2023
à 12:21 par
Guybrush.