Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > fr.comp.lang.python > #4183

Re: Curiosité avec datetime

From Dominique <dominique.sextant@orange.fr.invalid>
Newsgroups fr.comp.lang.python
Subject Re: Curiosité avec datetime
Date 2024-04-09 03:15 +0200
Organization A noiseless patient Spider
Message-ID <uv24rt$3r0sd$1@dont-email.me> (permalink)
References <uv13v9$3jck7$1@dont-email.me> <66141bf8$0$3239$426a74cc@news.free.fr>

Show all headers | View raw


Le 08/04/2024 à 18:31, yves a écrit :

> c'est que datetime ne traite pas du tout ce changement de calendrier. Le
> module assume que le calendrier Gregorien a toujours été en vigueur.
> 
> Ce qui n'est pas surprenant à la lecture de la page Wikipédia :
> 
> <https://fr.wikipedia.org/wiki/
> Passage_du_calendrier_julien_au_calendrier_gr%C3%A9gorien>
> 
> En résumé, la page explique que la date de changement de calendrier a été
> variable selon les endroits.


Bonjour Yves,

Oui, l'application du calendrier grégorien s'est étalée dans le temps. 
Je crois que le dernier pays à l'avoir adopté est la Russie en 1917. Je 
suis toutefois étonné que datetime tout comme astropy ne tiennent pas 
compte de ce changement de calendrier.

Avec un script un peu plus « rustique » écrit à partir de « Calculs 
astronomiques à l'usage des amateurs » de Jean Meeus, l'écart de 1 jour 
s'obtient bien :

-------------------------------------------------------------
j=int(input("Jour "))
m=int(input("Mois "))
y=int(input("Année "))

def julien(y,m,d,b):
     jj=int(365.25*y)+int(30.6001*(m+1))+d+1720994.5+b
     return jj


mois=m
annee=y

heure=int(input("Heure "))
minutes=float(input("Minutes "))

d=j+(heure+minutes/60)/24

temps=y+m/100+j/10000

a=int(y/100) ##calculs (a et b) intermédiaires pour tenir compte du 
changement de calendrier
b=2-a+int(a/4)


if temps<1582.1015: ##la date cherchée est-elle antérieure au 15/10/1582
     b=0 ##neutralisation de b si nous sommes dans le calendrier julien

if m<3:
     y-=1
     m+=12
jule=julien(y,m,d,b)

print ("Le ",j,"/",mois,"/",annee,"à ",heure,"h",minutes," correspond au 
jour julien : ",round(jule,4))

-------------------------------------------------------------
J'obtiens les bons résultats :
Le  4 / 10 / 1582 à  0 h 0  correspond au jour julien :  2299159.5
Le  15 / 10 / 1582 à  0 h 0  correspond au jour julien :  2299160.5

La différence est bien d'un jour.

Bonne journée,
-- 
Dominique
Esto quod es

Back to fr.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Curiosité avec datetime Dominique <dominique.sextant@orange.fr.invalid> - 2024-04-08 17:54 +0200
  Re: Curiosité avec datetime yves <yves@free.invalid> - 2024-04-08 16:31 +0000
    Re: Curiosité avec datetime Dominique <dominique.sextant@orange.fr.invalid> - 2024-04-09 03:15 +0200
  Re: Curiosité avec datetime yves <yves@free.invalid> - 2024-04-09 14:14 +0000

csiph-web