manu5980
Messages postés11Date d'inscriptionvendredi 6 janvier 2006StatutMembreDernière intervention24 janvier 2006
-
20 janv. 2006 à 09:34
manu5980
Messages postés11Date d'inscriptionvendredi 6 janvier 2006StatutMembreDernière intervention24 janvier 2006
-
20 janv. 2006 à 12:06
Bonjour a tous, je voudrais savoir comment avoir un TDateTimePicker avec les dates fériés et par conséquent ne pas pouvoir les sélectionner dans le calendrier. merci d'avance manu
yannba
Messages postés133Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention 7 septembre 2010 20 janv. 2006 à 11:50
C'est pas de moi, j'avais trouvé sur internet, je ne sais plus trop où, stocké sur mon ordi, ...alors je te retransmets tout. Ca devrait resoudre on problème :
Il est souvent nécessaire, lors des manipulations de dates, de savoir si un jour est férié ou non (calcul des jours ouvrables, génération de calendriers, etc...).
Tout cela est facile pour les jours fériés de date fixe (jour de l'an, Noël, etc...) mais il en va tout autrement pour les jours fériés mobiles (Pâques, Pentecôte, etc...) qui sont calculés à partir de la date de Pâques
Lundi de Pâques = Pâques + 1 jour
Ascension = Pâques + 39 jours
Pentecôte = Pâques + 49 jours
Lundi de Pentecôte = Pâques + 50 jours
Le dimanche de Pâques correspond au premier dimanche suivant la première pleine lune du printemps.
La fonction ci-dessous calcule le jour de Pâques pour les dates comprises entre 1583 et 4099.
function Paques(Annee : Integer) : TDateTime;
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 := EncodeDate(Annee, M, J);
end;
yannba
Messages postés133Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention 7 septembre 2010 20 janv. 2006 à 12:03
En plus lisible ...
function Paques(Annee : Integer) : TDateTime;
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 := EncodeDate(Annee, M, J);
end;