1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<form name="date" action="date2.php" method="POST" >
<select name="mois">
<option value="1">janvier</option>
<option value="2">février</option>
<option value="3">mars</option>
<option value="4">avril</option>
<option value="5">mai</option>
<option value="6">juin</option>
<option value="7">juillet</option>
<option value="8">aout</option>
<option value="9">septembre</option>
<option value="10">octobre</option>
<option value="11">novembre</option>
<option value="12">décembre</option>
</select>
<br />
<input type="submit" name="valider" value="valider" /><br />
</form>
</body>
</html>
<?php
/**
* nb_open_days($date_depart, $date_fin);
*
* @param string $mois
*
*
*
* @return $nb_jours_ouvres du mois
*/
$mois=$_POST['mois'];
function get_nb_open_days($date_depart, $date_fin) {
$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_fin) - date('Y', $date_depart);
for ($i = 0; $i <= $diff_year; $i++) {
$year = (int)date('Y', $date_depart) + $i;
// Liste des jours feriés
$arr_bank_holidays[] = '1_1_'.date('Y'); // Jour de l'an
$arr_bank_holidays[] = '1_5_'.date('Y'); // Fete du travail
$arr_bank_holidays[] = '8_5_'.date('Y'); // Victoire 1945
$arr_bank_holidays[] = '14_7_'.date('Y'); // Fete nationale
$arr_bank_holidays[] = '15_8_'.date('Y'); // Assomption
$arr_bank_holidays[] = '1_11_'.date('Y'); // Toussaint
$arr_bank_holidays[] = '11_11_'.date('Y'); // Armistice 1918
$arr_bank_holidays[] = '25_12_'.date('Y'); // Noel
$arr_bank_holidays[] = '5_06_'.date('Y'); // pp
// Récupération de paques. Permet ensuite d'obtenir le jour de l'ascension et celui de la pentecote
$easter = easter_date(date('Y'));
$arr_bank_holidays[] = date('j_n_'.date('Y'), $easter + 86400); // Paques
$arr_bank_holidays[] = date('j_n_'.date('Y'), $easter + (86400*39)); // Ascension
// $arr_bank_holidays[] = date('j_n_'.date('Y'), $easter + (86400*49)); // Pentecote
}
$nb_days_open = 0;
while ($date_depart < $date_fin) {
// 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_depart), array(0, 6))
&& !in_array(date('j_n_'.date('Y', $date_depart), $date_depart), $arr_bank_holidays)) {
$nb_days_open++;
}
$date_depart += 86400;
}
$nb_days_open++;
return $nb_days_open;
}
$nb_jour_mois = cal_days_in_month(CAL_GREGORIAN, $mois, date('Y'));
$date_depart = strtotime(strval (date('Y'))."-".strval ($mois)."-".strval (1));
$date_fin = strtotime(strval (date('Y'))."-".strval ($mois)."-".strval ($nb_jour_mois));
$nb_jours_ouvres = get_nb_open_days($date_depart, $date_fin);
echo 'Il y a '.$nb_jours_ouvres.' jours ouvrés entre le '.strval (date('Y'))."-".strval ($mois)."-".strval (1).' et le '.strval (date('Y'))."-".strval ($mois)."-".strval ($nb_jour_mois);
echo ' nombre jour dans le mois : '.$nb_jour_mois; |
Partager