0
0
Date de Pâques
Je crois que j'en avais déjà parlé : attention, si on veut vraiment être exact, il faut tenir compte de l'heure, et donc du fuseau horaire pour lequel on fait la conversion.
En effet, le jour Julien commence à 12:00 GMT, donc...
Cette petite fantaisie vient du fait que le jour Julien a été défini par les astronomes, qui ne voulaient pas que la date change pendant une nuit d'observation.
| Code : | Sélectionner tout |
1 2 3 4 5 6 |
program Divination;
begin
WriteLn('Hummm....');
WriteLn('D''après mes calculs, cette année, Noël tombera le 25 Décembre.');
end. |
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | program JourCendres;
{$APPTYPE GUI}
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
uses
Windows, SysUtils, Fetes;
const
CENDRES = -46;
var
s: string;
y: word;
begin
y := CurrentYear;
s := 'Jour des Cendres'#13#13 + ChaineJour(JourRelatifPaques(y, CENDRES));
MessageBox(0, pChar(s), pChar('Année ' + IntToStr(y)), MB_OK);
end. |
Puissent ces fêtes exister encore au delà de cette date.
salut
un truc que j'ai dans mes carton depuis des années
Function LundiPaques(Iyear : Integer) : TDateTime;
Var
L : array[1..6] of LongInt;
Lj,Lm : LongInt;
begin
L := Iyear Mod 19;
L := Iyear Mod 4;
L := Iyear Mod 7;
L := (19 * L + 24) Mod 30;
L := ((2 * L) + (4 * L) + (6 * L) + 5) Mod 7;
L := 22 + L + L;
If L > 31 Then
begin
Lj := L - 31;
Lm := 4;
end
Else
begin
Lj := L;
Lm := 3;
End;
//' Lundi de Pâques = Paques + 1 jour
Result := DateIncDay(EncodeDate(Iyear,Lm,Lj),1);
End;
Function EstFerie(QuelleDate : TDateTime) : Boolean;
Var
anneeDate : Integer;
joursFeries : Array[1..11] of TDateTime ;
i : Integer;
begin
anneeDate := Yearof(QuelleDate);
joursFeries := EncodeDate(anneeDate, 1, 1);
joursFeries := EncodeDate(anneeDate, 5, 1);
joursFeries := EncodeDate(anneeDate, 5, 8);
joursFeries := EncodeDate(anneeDate, 7, 14);
joursFeries := EncodeDate(anneeDate, 8, 15);
joursFeries := EncodeDate(anneeDate, 11, 1);
joursFeries := EncodeDate(anneeDate, 11, 11);
joursFeries := EncodeDate(anneeDate, 12, 25);
joursFeries := LundiPaques(anneeDate);
joursFeries := DateIncDay(joursFeries,38); //' Ascension = lundi de Paques + 38
joursFeries := DateIncDay(joursFeries,49); //' Lundi Pentecôte = lundi de Paques + 49
EstFerie := False;
For i := 1 To 11 do
If trunc(QuelleDate) = trunc(joursFeries) Then
EstFerie := True
End;

| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | program dateutils_datetimetojuliandate;
{$APPTYPE CONSOLE}
uses
SysUtils, DateUtils;
begin
WriteLn(Format(
'%.1f',
[DateTimeToJulianDate(EncodeDateTime(1582, 10, 15, 12, 0, 0, 0))]
));
ReadLn;
// 2299160,5 (FPC 3.0.0)
// 2299161,0 (Delphi 7)
end. |
J'ai l'impression que je ne suis pas le seul à avoir fait la confusion entre jour julien et calendrier julien (il faut dire que l'appellation a été mal choisie). La description de la fonction dans la documentation de Free Pascal contient une formule ambiguë :
| Code : | Sélectionner tout |
DateTimeToJulianDate converts the AValue date/time indication to a julian (as opposed to Gregorian) date.
Je me suis amusé à fabriquer une documentation avec PasDoc. Il n'y a pas grand chose dedans, mais c'est très joli (et facile à faire).
Je vous propose la version 2025 de ce projet.
Les unités ont été remaniées et complétées. Plusieurs programmes de démonstration ont été ajoutés, dont un projet MSEgui et un projet Lazarus qui génère un document en LaTeX.
