Je vous file le code, vous en faites ce que vous voulez.
Code : Tout sélectionner
;{/ Déclarations
Declare.s Is_Holliday(date_) ; Calcul des jours fériés
Declare Get_Easter_Date(date_) ; Calcul de la date de Pâques
Declare Get_Year_Short(date_) ; Retourne l'année sur deux chiffres
Declare Get_Year_Long(date_) ; Retourne l'année sur quatre chiffres
Declare.s Get_Month_Txt(date_) ; Retourne le nom du mois (Janvier à Décembre)
Declare Get_Month_Num(date_) ; Retourne le mois au format numérique (1 à 12)
Declare Get_DayOfYear(date_) ; Retourne le numéro du jour dans l'année
Declare.s Get_Day_Txt(date_) ; Retourne le nom du jour (Dimanche à Samedi)
Declare Get_Day_Num(date_) ; Retourne le jour au format numérique (1 à 31)
Declare.s Get_Date_Txt(date_, Sep$, Mode.l) ; Retourne la date au format texte
;}
;{/ Constantes
#Date_ShortYear = 1 ; Année sur deux chiffres
#Date_LongYear = 2 ; Année sur quatre chiffres
#Date_DayText = 4 ; Jour au format texte - Separateur [ ] - Année sur 4 chiffres
#Date_MonthText = 8 ; Mois au format texte - Separateur [ ] - Année sur 4 chiffres
#Date_FullText = 16 ; Jour et Mois au format texte - Séparateur [ ] - Année sur 4 chiffres
;}
;{/ Dates
Procedure.s Get_Date_Txt(date_, Sep$, Mode.l) ; Renvoie la date au format texte
D$ = "" : M$ = ""
Select Mode
Case #Date_ShortYear : D$ = "%dd" : M$ = "%mm" : Y$ = "%yy"
ProcedureReturn FormatDate(D$+Sep$+M$+Sep$+Y$, date_)
Case #Date_LongYear : D$ = "%dd" : M$ = "%mm" : Y$ = "%yyyy"
ProcedureReturn FormatDate(D$+Sep$+M$+Sep$+Y$, date_)
Case #Date_DayText : ND$ = Get_Day_Txt(date_) : D$ = "%dd" : M$ = "%mm" : Y$ = "%yyyy"
ProcedureReturn ND$ + " " + FormatDate(D$+Sep$+M$+Sep$+Y$, date_)
Case #Date_MonthText : D$ = "%dd" : M$ = Get_Month_Txt(date_) : Y$ = "%yyyy" : Sep$ = " "
ProcedureReturn FormatDate(D$+Sep$+M$+Sep$+Y$, date_)
Case #Date_FullText : ND$ = Get_Day_Txt(date_) : D$ = "%dd" : M$ = Get_Month_Txt(date_) : Y$ = "%yyyy" : Sep$ = " "
ProcedureReturn ND$ + " " + FormatDate(D$+Sep$+M$+Sep$+Y$, date_)
EndSelect
EndProcedure
;}
;{/ Jours
Procedure Get_Day_Num(date_) ; Retourne le jour au format numérique (1 à 31)
ProcedureReturn Day(date_)
EndProcedure
Procedure.s Get_Day_Txt(date_) ; Retourne le nom du jour (Dimanche à Samedi)
Restore jour
For i = 0 To DayOfWeek(date_)
Read.s D$
Next
ProcedureReturn D$
EndProcedure
Procedure Get_DayOfYear(date_) ; Retourne le numéro du jour dans l'année
ProcedureReturn DayOfYear(date_)
EndProcedure
;}
;{/ Mois
Procedure Get_Month_Num(date_) ; Retourne le mois au format numérique (1 à 12)
ProcedureReturn Month(date_)
EndProcedure
Procedure.s Get_Month_Txt(date_) ; Retourne le nom du mois (Janvier à Décembre)
Restore Mois
For i = 1 To Month(date_)
Read.s D$
Next
ProcedureReturn D$
EndProcedure
;}
;{/ Année
Procedure Get_Year_Long(date_) ; Retourne l'année sur quatre chiffres
ProcedureReturn Year(date_)
EndProcedure
Procedure Get_Year_Short(date_) ; Retourne l'année sur deux chiffres
ProcedureReturn Val(FormatDate("%yy", date_))
EndProcedure
;}
;{/ Pâques
Procedure Get_Easter_Date(date_) ; Calcul de la date de Pâques
Y = Year(date_)
a = Y % 19 : b = Y/100 : c = Y % 100
P = b / 4 : e = b % 4 : F = (b + 8) / 25
g = (b - F + 1) / 3 : h = (19 * a + b - P - g + 15) % 30
i = c / 4 : k = c % 4 : r = (32 + 2 * e + 2 * i - h - k) % 7
N = (a + 11 * h + 22 * r) / 451
M = (h + r - 7 * N + 114) / 31
D = ((h + r - 7 * N + 114) % 31) + 1
ProcedureReturn Date(Y, M, D, 0, 0, 0)
EndProcedure
;}
;{/ Calcul des jours fériés
Procedure.s Is_Holliday(date_) ; Calcul des jours fériés
D = Day(date_)
M = Month(date_)
P = Get_Easter_Date(date_)
If date_ = P
ProcedureReturn "Dimanche de Paques"
ElseIf date_ = AddDate(P, #PB_Date_Day, 1)
ProcedureReturn "Lundi de Paques"
ElseIf date_ = AddDate(P, #PB_Date_Day, 39)
ProcedureReturn "Ascension"
ElseIf date_ = AddDate(P, #PB_Date_Day, 49)
ProcedureReturn "Pentecôte"
ElseIf date_ = AddDate(P, #PB_Date_Day, 50)
ProcedureReturn "Lundi de Pentecôte"
ElseIf M = 1 And D = 1
ProcedureReturn "Jour de l'An"
ElseIf M = 5 And D = 1
ProcedureReturn "Fête du Travail"
ElseIf M = 5 And D = 8
ProcedureReturn "Armistice 39-45"
ElseIf M = 7 And D = 14
ProcedureReturn "Fête Nationale"
ElseIf M = 8 And D = 15
ProcedureReturn "Assomption"
ElseIf M = 11 And D = 1
ProcedureReturn "Armistice 14-18"
ElseIf M = 11 And D = 11
ProcedureReturn "Toussaint"
ElseIf M = 12 And D = 25
ProcedureReturn "Noël"
ElseIf M = 12 And D = 31
ProcedureReturn "Saint Sylvestre"
Else
ProcedureReturn ""
EndIf
EndProcedure
;}
;{- TESTS
D = Date(2011, 06, 12,0,0,0)
Debug Get_Day_Num(D)
Debug Get_Day_Txt(D)
Debug Get_DayOfYear(D)
Debug ""
Debug Get_Month_Num(D)
Debug Get_Month_Txt(D)
Debug ""
Debug Get_Year_Long(D)
Debug Get_Year_Short(D)
Debug ""
P = Get_Easter_Date(D)
Debug "Date de paques: le " + Get_Day_Txt(P)+" "+Str(Get_Day_Num(P))+" "+Get_Month_Txt(P)+" "+Str(Get_Year_Long(P))
Debug ""
Debug Is_Holliday(D)
Debug Get_Date_Txt(D, "/", #Date_ShortYear)
Debug Get_Date_Txt(D, "/", #Date_LongYear)
Debug Get_Date_Txt(D, "/", #Date_DayText)
Debug Get_Date_Txt(D, "/", #Date_MonthText)
Debug Get_Date_Txt(D, "/", #Date_FullText)
Debug ""
Debug "Pâques"
Debug Get_Date_Txt(P, "/", #Date_ShortYear)
Debug Get_Date_Txt(P, "/", #Date_LongYear)
Debug Get_Date_Txt(P, "/", #Date_DayText)
Debug Get_Date_Txt(P, "/", #Date_MonthText)
Debug Get_Date_Txt(P, "/", #Date_FullText)
;{/Datas
DataSection
Jour:
Data.s "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi","Vendredi","Samedi"
Mois:
Data.s "Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"
EndDataSection
;}
Une ligne était identique à la suivante et donc, les résultats étaient identiques. Saloperie de copier/coller
En fait, personne n'a testé le code. Bande de guignols
