Soyez le premier à donner votre avis sur cette source.
Snippet vu 44 317 fois - Téléchargée 18 fois
<?php // Fonction permettant de compter le nombre de jours ouvrés entre deux dates function get_nb_open_days($date_start, $date_stop) { $arr_bank_holidays = array(); // Tableau des jours feriés // On boucle dans le cas où l'année de départ serait différente de l'année d'arrivée $diff_year = date('Y', $date_stop) - date('Y', $date_start); for ($i = 0; $i <= $diff_year; $i++) { $year = (int)date('Y', $date_start) + $i; // Liste des jours feriés $arr_bank_holidays[] = '1_1_'.$year; // Jour de l'an $arr_bank_holidays[] = '1_5_'.$year; // Fete du travail $arr_bank_holidays[] = '8_5_'.$year; // Victoire 1945 $arr_bank_holidays[] = '14_7_'.$year; // Fete nationale $arr_bank_holidays[] = '15_8_'.$year; // Assomption $arr_bank_holidays[] = '1_11_'.$year; // Toussaint $arr_bank_holidays[] = '11_11_'.$year; // Armistice 1918 $arr_bank_holidays[] = '25_12_'.$year; // Noel // Récupération de paques. Permet ensuite d'obtenir le jour de l'ascension et celui de la pentecote $easter = easter_date($year); $arr_bank_holidays[] = date('j_n_'.$year, $easter + 86400); // Paques $arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*39)); // Ascension $arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*50)); // Pentecote } //print_r($arr_bank_holidays); $nb_days_open = 0; // Mettre <= si on souhaite prendre en compte le dernier jour dans le décompte while ($date_start < $date_stop) { // Si le jour suivant n'est ni un dimanche (0) ou un samedi (6), ni un jour férié, on incrémente les jours ouvrés if (!in_array(date('w', $date_start), array(0, 6)) && !in_array(date('j_n_'.date('Y', $date_start), $date_start), $arr_bank_holidays)) { $nb_days_open++; } $date_start = mktime(date('H', $date_start), date('i', $date_start), date('s', $date_start), date('m', $date_start), date('d', $date_start) + 1, date('Y', $date_start)); } return $nb_days_open; } // Exemple : Du 11 au 15 juillet il n'y a qu'un jour ouvré (week-end + 1 jours férié) $date_depart = strtotime('2008-07-11'); $date_fin = strtotime('2008-07-15'); $nb_jours_ouvres = get_nb_open_days($date_depart, $date_fin); echo 'Il y a '.$nb_jours_ouvres.' jours ouvrés entre le '.date('d/m/Y', $date_depart).' et le '.date('d/m/Y', $date_fin); ?>
Commentaires
Merci pour le code et ça marche bien! mais j'aimerai faire que les dates(date début et date fin) sont entrées dans un input type="text"!
Quelqu'un pourra m'aider?
C'est urgent
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.