La difficulté pour associer un jour de la semaine à une date réside dans le choix d'une
convention pour le début de l'année. La norme internationale indique ainsi qu'une semaine
est considérée comme complète que lorsqu'elle inclut le Jeudi.
A partir de là, on calcule la date du premier Jeudi de l'année et on en déduit le jour de
la semaine recherché à l'aide d'un algorithme... pas très simple !
La fonction suivante renvoie une valeur comprise entre 0 et 6 correspondant respectivement
au Lundi et au Dimanche.
Jour de la semaine en fonction de la date function WeekDay(Day, Month, Year: Word): Word;
function FirstThursday(Year: Word): Word;
begin
FirstThursday := 7 - (1 + (Year-1600) + (Year-1597) div 4
- (Year-1501) div 100 + (Year-1201) div 400) mod 7;
end;
function DayNumber(Day, Month, Year: Word): Word;
const
DaysBeforeMonth: array[1..12] of Word =
(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
begin
DayNumber := DaysBeforeMonth[Month] + Day +
Ord((Month > 2) and (Year mod 4 = 0) and
((Year mod 100 <> 0) or (Year mod 400 = 0)));
end;
begin
WeekDay := (7 + DayNumber(Day, Month, Year) - FirstThursday(Year) + 3) mod 7;
end;
|