Existe-t-il une bibliotheque de fonction en Delphi/pascal libre de preference qui permet de faire des calculs sur les dates (jours ouvrés avec prise en compte des jours fériés).
Merci !
Existe-t-il une bibliotheque de fonction en Delphi/pascal libre de preference qui permet de faire des calculs sur les dates (jours ouvrés avec prise en compte des jours fériés).
Merci !
Salut,
Voiçi déjà de quoi déterminer la date des jours fériés mobiles : la fonction sPaques(Annee : integer) renvoie une chaine au format jj.mm.aaaa qui donne la date de Pâques et en même temps elle actualise la valeur des variables globales JourPaques, MoisPaques, JourAscension, MoisAscension, JourPentecote, MoisPentecote : Integer; pour les jours fériés fixes suffit de prendre un calendier.... et à partir du moment où t'as la date du dimanche de Pâques d'une année t'as les dates de tous les dimanches de l'année.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 type s1Date = string[10]; var JourPaques,MoisPaques,JourAscension,MoisAscension, JourPentecote,MoisPentecote : integer; function sPaques(Annee : integer) : s1Date; { jj.mm.aaaa / méthode de Gauss } var v,w,x,y,z,m,n,JP,MP,r1,r2 : integer; cA,cJ,cM : string[4]; var njMois : array[1..12] of byte; begin njMois[1]:=31; if Annee mod 4 =0 then njMois[2]:=29 else njMois[2]:=28; njMois[3]:=31; njMois[4]:=30; njMois[5]:=31; njMois[6]:=30; njMois[7]:=31; njMois[8]:=31; njMois[9]:=30; njMois[10]:=31; njMois[11]:=30; njMois[12]:=31; { ----------- } JP:=0; MP:=0; if (Annee>1582) and (Annee<2200) then { année grégorienne } begin case Annee of 1583..1699 : begin m:=22; n:=2; end; 1700..1799 : begin m:=23; n:=3; end; 1800..1899 : begin m:=23; n:=4; end; 1900..2099 : begin m:=24; n:=5; end; 2100..2199 : begin m:=24; n:=6; end; end; v:=Annee mod 4; w:=Annee mod 7; x:=Annee mod 19; y:=(19*x + m) mod 30; z:=(2*v + 4*w + 6*y + n) mod 7; if (y+z>9) then begin JP:=y+z-9; MP:=4; if JP=26 then JP:=19; if (JP=25) and (y=28) then JP:=18; end else begin JP:=22+y+z; MP:=3; end; JourPaques:=JP; MoisPaques:=MP; cJ:=intToStr(JP); cM:=intToStr(MP); cA:=intToStr(Annee); sPaques:=cJ+'.'+cM+'.'+cA; end else sPaques:='1583-2199'; JourPaques:=JP; MoisPaques:=MP; if JP>0 then begin { Jeudi de l'Ascension = Pâques + 39 } r1:=njMois[MoisPaques]-JourPaques; r2:=39-r1; if r2<=njMois[MoisPaques+1] then MoisAscension:=MoisPaques+1 else begin r2:=r2-njMois[MoisPaques+1]; MoisAscension:=MoisPaques+2 end; JourAscension:=r2; { Pentecôte = Ascension + 10 } if JourAscension+10<=njMois[MoisAscension] then begin JourPentecote:=JourAscension+10; MoisPentecote:=MoisAscension; end else begin JourPentecote:=JourAscension+10-njMois[MoisAscension]; MoisPentecote:=MoisAscension+1; end; end; end;
... et le lundi de Pâques qui est également mobile c'est bien entendu le lendemain du dimanche de Pâques...
A+
EDIT : Et pour les calculs sur dates : voir l'aide Delphi.
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Salut
Sinon tu as également ceci dans la FAQ, pour les jours fériés mobiles.
Quant aux jours ouvrés, comme le précise Gilbert, tu disposes des fonctions de DateUtils, notamment DayOfWeek, DayOfTheWeek, ...
@+ Claudius
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager