by ggauny@live.fr » 30 Mar 2021, 15:44
Bonjour à tous,
Un premier jet de mes programmes calendaires portés en python. (Ce n'est pas une sinécure !)
Mais j'y arriverai
- Code: Select all
# Date calendaire d'un JDN donné.
# Validité du 01/01/-4712 au 31/12/9999.
# jdn signifie Julian Day Number en anglais soit : Numéro du jour Julien.
from math import *
def j2d(jdn):
z=A=a=b=c=E=R=0
d=j=m=an=s=0
R=1
if jdn<=0 or jdn>5373484:
raise Exception("jdn indéfini car hors limites de validité")
#print("jdn indéfini car hors limites de validité")
z=int(jdn)
a=int((z-1867216.25)/36524.25)
A=z+1+a-int(a/4)
b=A+1524; c=int((b-122.1)/365.25);
d= int(365.25*c); E=int((b-d)/30.6001);
j=b-d-int(30.6001*E)
if E<14:
m=E-1
if E==14 or E==15:
m=E-13
if m<3:
an=c-4715
if m>2:
an=c-4716
if an<0:
R=-1
s=R*(fabs(j)+ fabs(m/100)+ fabs(an/1000000))
s=round(s,7)
print(s)
Peut-être des maladresses à rectifier ? Sûrement...
par exemples :
jdn = 1 507 900 donne 22 mai -584 (585 av JC) en date julienne, 28 mai en date grégorienne
jdn = 1 842 713 donne 28 janvier 0333, parfois 27 selon les modes d'arrondis
jdn = 2 427 857 donne 23 février 1935
etc.
Merci à Adriweb.