CALENDRIER

pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008 - 12 oct. 2006 à 02:42
pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008 - 28 janv. 2008 à 15:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39816-calendrier

pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008
28 janv. 2008 à 15:10
DEDEAZER
Bonjour.
Lorsque j’écris « L'algorithme pour trouver les dates », je pense à un algorithme basé sur un calendrier grégorien. Après lecture de plusieurs logiciels, je m’aperçois qu’ils ont un algorithme de calendrier julien. 2100, n’étant pas bissextile en grégorien, contrairement au julien, ces calendriers ne peuvent donc pas aller au-delà de 2099, ni même en deçà de mars 1900.
On ne peut pas en vouloir à leurs auteurs, dans la mesure où ils le précisent.
Pour le calendrier de Cheval, les calculs se font uniquement en grégorien, il ne peut donc pas être précis avant novembre 1582, date du passage de julien à grégorien le 4 octobre 1582, mais reste juste à partir de 1583. Cheval s’est donné une limite à l’an 3000 parce qu’il utilise une boucle qui prend du temps. Une petite modification, pour éviter cette boucle, suffirait pour sauter cette barrière de l’an 3000.
Pour mon programme, les calculs se font autant en julien qu’en grégorien et n’a pas de limite dans le temps si on réfère aux textes officiels.
Très cordialement.

Gérard.
pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008
22 janv. 2008 à 20:54
Mille excuses, j’ai fait partir le commentaire trop vite en oubliant les formules de politesses.
Je corrige donc.

Bonjour,
Et très cordialement.

Gérard l’étourdi
pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008
22 janv. 2008 à 20:46
DEDEAZER
L’algorithme pour trouver les dates en 20008 est exactement le même que 2008, par exemple. Mais ces calculs subiraient une dérive de 5 jours.
Dérive dû à l’imprécision du calendrier grégorien qui est trop long de 0,0003j, c'est-à-dire de 3 jours tous les 10000 ans. Sans oublier l’allongement de l’année, dû au ralentissement de la rotation terrestre (0,6 s au bout d’un siècle). Tu comprendras que pour ajuster les dates, par rapport au soleil, on sera obligé de supprimer une année bissextile tous les 4000 ans. Cet ajustement n’a pas encore été officialisé, c’est pourquoi on ne peut pas la prendre en compte dans les programmes, mais on doit en tenir compte.
Si on s’en tient aux textes officiels, le programme de Cheval, excepté le calcul des jours de fêtes, tout comme le mien, fonctionne parfaitement à condition de modifier l’entrée du champs « année ». Mais pour ce qui est de l’avenir, je te donne rendez-vous en l’an 20000 pour ajuster le programme.
dedeazer Messages postés 13 Date d'inscription dimanche 2 novembre 2003 Statut Membre Dernière intervention 13 janvier 2008
13 janv. 2008 à 00:04
Bonjour,

Je cherche un programme style calendrier perpétuel qui me permettrait de faire le calendrier de l'année 20008.

Bonjour,

Je cherche un programme style calendrier perpétuel qui me permettrait de faire le calendrier de l'année 20008.
Bonjour,

Ce n'est pas une blague mais j'aimerais pouvoir trouver un calendrier qui calcul l'année 20008

La plupart des logiciels que j'ai trouvé ne vont pas au-delà de 2099, ce que je ne comprends pas d'ailleurs.

Très cordialement.

Dédé le chêne
pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008
4 juin 2007 à 23:25
Cheval.
Avec beaucoup de retard, je m?aperçois qu'il y avait un petit message m?invitant à modifier ton programme. C'est avec plaisir que je vais y apporter les corrections et de t?envoyer la copie.
Je suis en retraite à partir du mois prochain, c'à me laissera le temps d'effectuer cette refonte.
Je te donne donc rendez-vous au mois d'août ou septembre pour cette copie.
A bientôt et cordialement.
Gérard.
pasquet78 Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 19 juin 2008
12 oct. 2006 à 02:42
Cheval, je vais commencer par une petite réprimande car j'ai été surpris, en lançant ton programme de voir un texte sur le copyright qui n'est pas du tout dans l'esprit de ce site. Ceci ne m?a pas empêché de tester ton programme et de constater qu'il se plante au moment du chargement des images. J'ai donc testé à partir de celui qu'il y avait sur ton site et faits les constats suivants :
Lorsque j'interroge l'an 1, je constate un écart de 22 jours avec la réalité puisque les calculs se font en grégorien alors, qu'à cette époque, on était en julien. Je vois aussi apparaître les jours, "lundi", "mardi" ? "dimanche", alors qu'il a fallu attendre le 3ème siècle pour voir la notion des semaines, il n'y avait pas non plus de noms de saints à cette période.
Ton calendrier devient donc correct à partir de 1583, puisque le France est passée du 9-12 julien au 20-12 grégorien en 1582 sauf pour les calculs de pâques, année où ton programme me donne pâques un mercredi.
Je prends par exemple l'année 1800, je vois pâques tomber un lundi et, surprise, on fêtait déjà les victoires de 1918 et 1945.
Passons à la pratique, je commencerai par te conseiller de lire mon programme http://www.vbfrance.com/codes/CALENDRIER-MORET-VRAI-CALENDRIER-PERPETUEL_38071.aspx pour te donner une notion sur les dates, ces codes t?appartiennent, comme ils appartiennent à toute la communauté vbfrance. Pour ce qui est du calcul de la date de pâques, utilise plutôt cette formule tirée d'un algorithme de J. Meus en 1876, en grégorien et en julien :

Type Format_Date_Paques
Quant_Paq As Integer
Mois_Paq As Integer
End Type

Public Function Rech_Date_Pâques(Année As Integer, ere As Integer) As Format_Date_Paques

' Date de Pâques - Calendrier grégorien
'--------------------------------------------------------|
' Dividende |Divi.|Quot.|Reste| explication |
'--------------------------------------------------------|
'Année | 19 | - | n |cycle de Méton |
'Année |100 | c | u |centaine et rang |
'c | 4 | s | t |siècle bissextil |
'c + 8 | 25 | p | - |proemptose |
'c - p + 1 | 3 | q | - |métemptose |
'19n + c - s - q + 15| 30 | - | e |épacte |
'u | 4 | b | d |année bissextile |
'32 + 2t + 2b - e - d| 7 | - | l |lettre dominicale|
'n + 11e + 22l |451 | h | - | |
'e + l - 7h + 114 | 31 | m | j |mois et quantième|
'--------------------------------------------------------|
' Date de Pâques - Calendrier julien
'--------------------------------------------------------|
' Dividende |Divi.|Quot.|Reste| explication |
'--------------------------------------------------------|
'Année | 4 | - | a |année bissextile |
'Année | 7 | - | b | |
'Année | 19 | - | n |cycle de Méton |
'19n + 15 | 30 | - | e |épacte |
'2a + 4b - e + 34 | 7 | - | l |lettre dominicale|
'e + l + 114 | 31 | m | j |mois et quantième|
'--------------------------------------------------------|

' Dans ces deux formules, n est le mois et p la veille de Pâques

'epacte = age de la lune au 1er janvier - 1
'La métemptose se renouvelle tous les 4 siècles,
'la proemptose suit un rytme de 25 siècles [(7x300)+400]
'l'épacte a maintenant un rythme de 30,
'et on conserve malgré tout notre cycle de méton de 19 (nombre d'or)

Dim a, n, u, t, e, d, l, j, c, s, p, q, b, h, m As Integer

If ere = 0 Then
n = Année Mod 19
c = Année \ 100
u = Année Mod 100
s = c \ 4
t = c Mod 4
p = (c + 8) \ 25
q = (c - p + 1) \ 3
e = (19 * n + c - s - q + 15) Mod 30
b = u \ 4
d = u Mod 4
l = (32 + 2 * t + 2 * b - e - d) Mod 7
h = (n + 11 * e + 22 * l) \ 451
c = e + l - 17 * h + 114
m = c \ 31
j = c Mod 31 + 1
Else
a = Année Mod 4
b = Année Mod 7
n = Année Mod 19
e = (19 * n + 15) Mod 30
l = (2 * a + 4 * b - e + 34) Mod 7
a = e + l + 114
m = a \ 31
j = a Mod 31 + 1
End If
Rech_Date_Pâques.Quant_Paq = j
Rech_Date_Pâques.Mois_Paq = m

End Function

Ta formule ne donne des valeurs cohérentes q?entre 1900 et 2997, on ne peux donc que la bannir. Par ailleurs, on voit apparaître pâques à partir de 33 alors que la définition de la date fût adopté par le concile de Nicée en 325.

Je reste à ta disposition en cas de besoin.

Je terminerai en te disant d'aérer ton écriture, de commenter et d'optimiser, pour rendre la lecture plus aisée.

Salutation.
Rejoignez-nous