cs_Christophe67
Messages postés80Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention15 juin 2012
-
2 avril 2010 à 18:16
cs_Christophe67
Messages postés80Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention15 juin 2012
-
3 avril 2010 à 09:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Christophe67
Messages postés80Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention15 juin 2012 3 avril 2010 à 09:32
J'oubliais, en Alsace-Moselle (régime du Concordat) le Vendredi Saint ainsi que le 26 Décembre sont aussi fériés.
2 jours en plus de repos !
cs_Christophe67
Messages postés80Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention15 juin 2012 3 avril 2010 à 09:03
Bonjour Dubois77,
Cette méthode fonctionne aussi mais apparemment que jusqu'en 4099 d'après le commentaire du source (mais çà doit suffire pour nos vies d'hommes ;).
L'avantage de l'algorithme de Oudin est qu'il nécessite moins de calcul aussi.
Cordialement.
Christophe
dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 3 avril 2010 à 08:31
Bonjour Christophe
pour compléter ce dossier, une variante de pâques et les autres jours qui vont avec !
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;
function LundiPaques(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+1;
end;
function Ascension(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+39;
end;
function Pentecote(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+49;
end;
function LundiPentecote(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+50;
end;
cs_Christophe67
Messages postés80Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention15 juin 2012 2 avril 2010 à 18:16
Pour proposer de l'innovant, j'ai vérifié que cet algorithme n'était pas présent sur ce site.
L'année est limitée à 9999 à cause de la structure TDateTime qui n'accepte les dates que jusque là.
3 avril 2010 à 09:32
2 jours en plus de repos !
3 avril 2010 à 09:03
Cette méthode fonctionne aussi mais apparemment que jusqu'en 4099 d'après le commentaire du source (mais çà doit suffire pour nos vies d'hommes ;).
L'avantage de l'algorithme de Oudin est qu'il nécessite moins de calcul aussi.
Cordialement.
Christophe
3 avril 2010 à 08:31
pour compléter ce dossier, une variante de pâques et les autres jours qui vont avec !
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;
function LundiPaques(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+1;
end;
function Ascension(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+39;
end;
function Pentecote(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+49;
end;
function LundiPentecote(Annee : Integer) : TDateTime;
begin
result := Paques(annee)+50;
end;
2 avril 2010 à 18:16
L'année est limitée à 9999 à cause de la structure TDateTime qui n'accepte les dates que jusque là.