Jours feries

Contenu du snippet

Teste si un jour donné est ferié ou pas.

Avec une fonction "Jour de Paques" qui n'est pas de moi (http://www.developpez.com/delphi/faq/?page=datesparticule - merci psl)

Source / Exemple :


function Paques(Annee : Integer) : TDate;
var
   Y,G,C,X,Z,D,E,N,P,J,M : Integer;
begin
     {Algorithme valable pour les dates comprises entre 1583 et 4099}
     Y := Annee;
     G := (Y mod 19) + 1;
     C := Trunc((Y / 100)) + 1;
     X := Trunc(3 * C / 4) - 12;
     Z := Trunc(((8 * C) + 5) / 25) - 5;
     D := Trunc(((5 * Y) / 4) - X - 10);
     E := ((11 * G)+ 20 + Z - X) mod 30;
     if ((E = 25)
          and (G > 11))
        or (E = 24)
        then E := E + 1;
     N := 44 - E;
     if N < 21
        then N := N + 30;
     P := N + 7 - ((D + N) mod 7);
     if P > 31
        then J := P - 31
        else J := P;
     if J = P
        then M := 3
        else M := 4;
     Result := Trunc(EncodeDate(Annee, M, J));
end;

function isFerie(ZeDate : TDate) : Boolean;
var
   MyDay    : Word;
   MyMonth  : Word;
   MyYear   : Word;
   MyPaques : TDateTime;
begin
     ZeDate := Trunc(ZeDate);
     Result  := False;
     MyDayOk := False;
     DecodeDate(ZeDate, MyYear, MyMonth, MyDay);
     // Verification dates paques
     // Lundi de paques
     if ZeDate = (Paques(MyYear) + 1) then begin
        Result  := True;
        Exit; // >>> SORTIE
     End;
     // Jeudi de l'ascension
     if ZeDate = (Paques(MyYear) + 39) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // Lundi de pentecote
     if ZeDate = (Paques(MyYear) + 50) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // Jours particuliers
     // Jour de l'an
     if (MyMonth = 1) and (MyDay = 1) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // 1 et 8 mai
     if (MyMonth = 5) and ((MyDay = 1) or (MyDay = 8)) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // 14 juillet
     if (MyMonth = 7) and (MyDay = 14) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // 1 et 11 novembre
     if (MyMonth = 11) and ((MyDay = 1) or (MyDay = 11)) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
     // Noel
     if (MyMonth = 12) and (MyDay = 25) then begin
        Result := True;
        Exit; // >>> SORTIE
     End;
end;

A voir également

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.