
| auteur : psl
|
Pour calculer la différence entre deux dates, on peut utiliser plusieurs méthodes :
En passant directement par les dates
var
Date1, Date2 : TDateTime;
Diff : Extended;
Jour1, Mois1, Annee1 : Word;
Jour2, Mois2, Annee2 : Word;
begin
Date1 := EncodeDate(Annee1, Mois1, Jour1);
Date2 := EncodeDate(Annee2, Mois2, Jour2);
Diff := Date2 - Date1;
end;
En passant directement par une fonction
var
Date1, Date2 : TDateTime;
Diff : Extended;
Jour1, Mois1, Annee1 : Word;
Jour2, Mois2, Annee2 : Word;
begin
Date1 := EncodeDate(Annee1, Mois1, Jour1);
Date2 := EncodeDate(Annee2, Mois2, Jour2);
Diff := DaysBetween(Date2, Date1);
end;
En passant par les jours Juliens
var
Date1, Date2 : TDateTime;
Diff : Extended;
Jour1, Mois1, Annee1 : Word;
Jour2, Mois2, Annee2 : Word;
begin
Date1 := EncodeDate(Annee1, Mois1, Jour1);
Date2 := EncodeDate(Annee2, Mois2, Jour2);
Diff := DateTimeToJulianDate(Date2)-DateTimeToJulianDate(Date1);
end;
La variable Diff représente la différence entre les deux dates, mais dans le cas où le nombre de jours dans un intervalle il y a lieu d'ajouter 1 au résultat (problème de bornes).
|
| auteur : psl
|
Le passage à l'heure d'été et d'hiver est fixé par loi jusqu'en 2006. Le passage à l'heure d'été s'effectue le dernier dimanche du mois de mars et le passage à l'heure d'hiver le dernier dimanche du mois d'octobre.
|
| auteur : psl
|
Le jour de la semaine est obtenu par la fonction DayOfTheWeek().
uses
DateUtils;
var
JourSem : Word;
Date1 : TDateTime;
begin
Date1 := EncodeDate(2002, 11, 1);
JourSem := DayOfTheWeek(Date1);
end;
|
| auteur : psl
|
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;
|
lien : Comment définir les jours fériés en France ?
|
| auteur : psl
|
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
Ascencion = Pâques + 39 jours
Pentecôte = Pâques + 49 jours
Lundi de Pentecôte = Pâques + 50 jours
|
lien : Comment calculer la date de Pâques ?
|
| auteur : psl
|
Pour convertir une date au format Julien vers le format Grégorien, il suffit de faire appel à la fonction JulianDateToDateTime().
uses
DateUtils;
var
JourJulien : Extended;
DateC : TDateTime;
begin
DateC := JulianDateToDateTime(JourJulien);
end;
Pour les utilisateurs dont la version de Delphi ne permet pas d'avoir accès à cette fonction, on peut utiliser le code présent da l'unité Julien2Gregorien.pas
|
téléchargement : Julien2Gregorien.pas [4 ko]
|
Ce document issu de
www.developpez.com
est soumis à la licence
GNU FDL
traduit en français
ici
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.
|