Bonjour Spina,
Ce n'est qu'une partie de ce que tu recherches, mais voici 2 fonctions JavaScript pour déterminer si une date (format string jj/mm/aaaa) est fériée ou pas.
La fonction principale (jourFerie) renvoie soit l'intitulé du jour férié, soit chaîne vide si pas férié.
Le moins évident est l'algorithme pour trouver la date de Pâques en fonction de l'année (fonction date_paques), d'autres fériés dépendants de cette date.
Tu n'as plus qu'à en extraire l'algo pour intégrer à ton algo global.
Bon courage pour le reste.
function jourFerie(st_date) { // format de date dd/mm/yyyy
// vérif week-end
var n_jour_semaine = (new Date(st_date.substring(6),st_date.substring(3,5)-1,st_date.substring(0,2))).getDay();
if (n_jour_semaine==6) {
return "samedi";
}
if (n_jour_semaine==0) {
return "dimanche";
}
// vérif jours fériés fixes
var st_jm = st_date.substring(0,5);
if (st_jm=="01/01") {
return "fête du premier de l'an";
}
if (st_jm=="01/05") {
return "fête du travail";
}
if (st_jm=="08/05") {
return "fête de la Victoire de 1945";
}
if (st_jm=="14/07") {
return "fête Nationale";
}
if (st_jm=="15/08") {
return "fête de l'Assomption";
}
if (st_jm=="01/11") {
return "fête de la Toussaint";
}
if (st_jm=="11/11") {
return "fête de l'Armistice de 1918";
}
if (st_jm=="25/12") {
return "fête de Noël";
}
// vérif jours dépendants de Pâques
var ladate = new Date(parseInt(st_date.substring(6)),parseInt(st_date.substring(3,5))-1,parseInt(st_date.substring(0,2)),0,0,0,0);
var da_paques = date_paques(st_date.substring(6));
var n_annee = da_paques.getFullYear();
var n_mois = da_paques.getMonth();
var n_jour = da_paques.getDate();
var da_lundi_paques = new Date(n_annee,n_mois,n_jour + 1);
var da_ascension = new Date(n_annee, n_mois, n_jour + 39);
var da_lundi_pentecote = new Date(n_annee, n_mois, n_jour + 50);
var ladate_time = ladate.getTime();
if (ladate_time == da_lundi_paques.getTime()) {
return "lundi de Pâques";
}
if (ladate_time == da_ascension.getTime()) {
return "Ascension";
}
if (ladate_time == da_lundi_pentecote.getTime()) {
return "lundi de Pentecôte";
}
return "";
}
function date_paques(st_annee) {
var n_annee = 0;
var n_an = 0;
var n_reste = 0;
var n_resua = 0;
var n_resub = 0;
var da_result;
var n_temp1 = 0;
n_an = parseInt(st_annee);
n_annee = n_an - 1900;
n_reste = parseInt(n_annee%19);
n_temp1 = ((n_reste * 11 + 4) - parseInt((n_reste * 7 + 1)/19));
n_resua = parseInt(n_temp1%29);
n_temp1 = parseInt(n_annee/4) - n_resua + n_annee + 31;
n_resub = 25 - parseInt(n_temp1%7) - n_resua;
if (n_resub > 0) {
da_result = new Date(n_an,03,n_resub);
} else {
n_resub = n_resub + 31;
da_result = new Date(n_an,02,n_resub);
}
return da_result;
}
Edit : attention, le fait que le lundi de Pentecôte soit férié dépend de l'entreprise !