Ajouter un délai à une date en php - en prenant compte des heures ouvrées

bonjour,
j’ai besoin d’une fonction qui ajouterait un délai en secondes à une date tout en prenant compte des heures ouvrées.
Donc cette fonction prendrait comme arguments :
$DateEntree => Date du jour (getdate())
$Delai => durée en seconde
Variables pour les heures ouvrées:
$ho_m_LV =>08:15 (heure d’ouverture le matin du lundi au vendredi)
$hf_m_LV =>12:00 (heure de fermeture le matin du lundi au vendredi)
$ho_ap_LV =>13:00 (heure d’ouverture l’apres-midi du lundi au vendredi)
$hf_ap_LV =>18:00 (heure de fermeture l’apres-midi du lundi au vendredi)
$ho_m_S =>08:15 (pour le samedi)
$hf_m_S =>12:30 (pour le samedi)
$ho_ap_S => 13:00 (pour le samedi)
$hf_ap_S =>13:00(pour le samedi)
Et elle me retournerai une date :
DateSortie => nouvelle date du meme type que getdate

AIDEZ MOI SVP! Je ne sais pas comment faire !!!!

Soit plus clair :slight_smile:

J’ai rien compris à ton problème.

Ah. Bon je vois ce que tu veux faire, voir comment, mais je n’ai guère le temps là.

Par contre, jour ouvré tu prends en compte les jours fériés (qui sont pas ouvrés justement, donc le 14 juillet doit sur le jour d’après, etc…)

Faut fonctionner par intervalles pour les jours de la semaine.

Tu vas retrancher à ton temps (et ajouter de l’autre côté, avec time() ça se fait bien les additions de date par entier) la différence temps courant / temps pour atteindre l’intervalle.

Genre, pour 4h, dans la plage 8h15 12h00, ça te fait retrancher 3h45 à 4h, soit 0h15 minutes restantes. Tu passe à la plage suivante (13h 18h), et là c’est la fin.

Si mettons c’est 49h, tu vas obligatoirement changer de jour : dans ce cas, tu change de plage d’intervalles, pour passer à celle du jour suivant.

Déterminer le jour suivant se fait simplement :

jour suivant = jour courant + 1
tant que pas d'intervalles (jour suivant) {
  ++jour suivant;
}

En gros, un jour ouvré comporte un intervalle de temps durant lequel tu peux bosser : tu va chercher un tel jour. Si c’est un dimanche, tu n’auras rien, si c’est un jour férié (il te faudra faire le nécessaire pour déterminer que c’est férié bien sûr, donc du calcul de date bien chiant) idem.

Ta liste d’intervalle, c’est un tableau de 7 éléments : chaque élément a pour clef un jour, ou son numéro dans la semaine (de 0 à 6; php permettant de les obtenir avec date, ou getdate/etc), et pour valeur un tableau d’intervalle (un intervalle c’est juste deux entiers : le temps min et max (en secondes à chaque fois).

Là tu as deux choix : bosser par date sous la forme de chaine de caractères, soit bosser par date sous la forme d’entier (façon time()) : dans ce cas, tu simplifie le calcul : passer au jour suivant revient à ajouter 86400 secondes.

Sinon tu as mktime(), etc.

Bonne chance, j’ai dis le principal.