IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Date de Pâques

Programme calculant la date du dimanche de Pâques pour une année quelconque du calendrier grégorien.
Avatar de droggo
Expert confirmé https://www.developpez.com
Le 03/02/2016 à 21:46
Bonjour,
Citation Envoyé par Roland Chastain Voir le message
J'ai fait une recherche sur les jours juliens (que je confondais auparavant avec le calendrier julien). Voici deux fonctions qui permettent de convertir une date grégorienne en jour julien et inversement.
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.
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 31/01/2016 à 23:15
Je vous propose l'unité Fetes, qui permet de connaître la date d'une fête relative à Pâques, par exemple la date du mercredi des Cendres. Le calcul se base sur une table des dates de Pâques de 1900 à 2199.

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.
Si vous lisez ce message avant 1900 (ce qui m'étonnerait franchement mais on ne sait jamais) ou après 2199, vous ne pouvez pas utiliser ce programme. Vous devez acheter la version "Pro".
Avatar de Eric2a
Membre émérite https://www.developpez.com
Le 31/01/2016 à 23:52
Salut Roland,

[...] après 2199, vous ne pouvez pas utiliser ce programme.
Je n'en mourrais pas

Puissent ces fêtes exister encore au delà de cette date.
Avatar de anapurna
Expert confirmé https://www.developpez.com
Le 03/02/2016 à 18:31
salut

un truc que j'ai dans mes carton depuis des années

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
Function LundiPaques(Iyear : Integer) : TDateTime; 
Var   
  L : array[1..6] of LongInt; 
  Lj,Lm : LongInt; 
begin 
  L[1] := Iyear Mod 19; 
  L[2] := Iyear Mod 4; 
  L[3] := Iyear Mod 7; 
  L[4] := (19 * L[1] + 24) Mod 30; 
  L[5] := ((2 * L[2]) + (4 * L[3]) + (6 * L[4]) + 5) Mod 7; 
  L[6] := 22 + L[4] + L[5]; 
 
  If L[6] > 31 Then 
  begin 
    Lj := L[6] - 31; 
    Lm := 4; 
  end 
  Else 
  begin 
    Lj := L[6]; 
    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[1] := EncodeDate(anneeDate, 1, 1); 
  joursFeries[2] := EncodeDate(anneeDate, 5, 1); 
  joursFeries[3] := EncodeDate(anneeDate, 5, 8); 
  joursFeries[4] := EncodeDate(anneeDate, 7, 14); 
  joursFeries[5] := EncodeDate(anneeDate, 8, 15); 
  joursFeries[6] := EncodeDate(anneeDate, 11, 1); 
  joursFeries[7] := EncodeDate(anneeDate, 11, 11); 
  joursFeries[8] := EncodeDate(anneeDate, 12, 25); 
 
  joursFeries[9]  := LundiPaques(anneeDate); 
  joursFeries[10] := DateIncDay(joursFeries[9],38);  //' Ascension = lundi de Paques + 38 
  joursFeries[11] := DateIncDay(joursFeries[9],49); //' Lundi Pentecôte = lundi de Paques + 49 
 
  EstFerie := False; 
  For i := 1 To 11 do 
    If trunc(QuelleDate) = trunc(joursFeries[i]) Then 
      EstFerie := True 
End;
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 04/02/2016 à 10:04
Aïe !

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.
C'est le second résultat qui est le bon, on est d'accord ?

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.
Ben non, justement, ce n'est pas "as opposed to gregorian".
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 07/02/2016 à 10:37
Je vous propose une version révisée de ce programme :

Date de Pâques

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).
Avatar de droggo
Expert confirmé https://www.developpez.com
Le 07/02/2016 à 11:42
Citation Envoyé par Roland Chastain Voir le message
Aïe !

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.
C'est le second résultat qui est le bon, on est d'accord ?

Oui, c'est bien ce que donne L'Institut de Mécanique Céleste et Calcul des Éphémérides

Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 21/03/2012 à 23:13
Bonjour,

Je vous propose un nouveau code source : Date du dimanche de Pâques

Programme calculant la date du dimanche de Pâques pour une année quelconque du calendrier grégorien.

Qu'en pensez-vous ?
Avatar de batyann811
Membre confirmé https://www.developpez.com
Le 22/03/2012 à 11:39
Si ça intéresse quelqu'un j'ai le même genre de programme pour l'Epiphanie, la Chandeleur, la saint Valentin, l'Assomption, la Toussaint, Noël et le Nouvel an.


Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.