Sujet : Re: Écart entre deux dates.
De : damien.wyart (at) *nospam* free.fr (Damien Wyart)
Groupes : fr.comp.lang.pythonDate : 23. May 2022, 13:44:14
Autres entêtes
Organisation : Serveur de News Free
Message-ID : <628b738e$0$18399$426a74cc@news.free.fr>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/29.0.50
* Dominique <
zzz@aol.com.invalid> in fr.comp.lang.python:
Il nous est demandé de calculer l'écart entre deux dates en utilisant
dateutil.
J'ai écrit ces quelques lignes, mais je les trouve compliquées et peu
élégantes. Je n'ai rien trouvé de probant dans la bibliothèque
dateutil :
from dateutil import parser
date1=parser.parse('2022-06-10')
date2=parser.parse('2022-01-01')
print((date1-date2).days)
160
Est-il possible de l'améliorer ? De plus, je ne vois pas très bien à
quoi correspond la fonction parser (et parse dans la foulée...)
Comme indiqué par Nicolas, parse permet d'analyser une chaîne pour en
extraire un object DataTime. La bibliothèque standard permet déjà de le
faire mais de manière moins souple et avec moins de support de formats
multiples. parser n'est pas une fonction mais permet juste de "ranger"
les différents noms dans le module dateutil. En arrière-plan, il
correspond aussi à une classe Parser, interne au module.
Comme Nicolas l'a également proposé, on peut très bien tout faire en
Python standard (je montre deux façons de créer des DateTime) :
from datetime import date
d1 = date.fromisoformat('2022-06-10')
d2 = date(2022, 1, 1)
print(d1-d2)
-> donne "160 days, 0:00:00"
pour cet exercice, plus que parse, c'est peut-être relativedelta, du
module dateutil, qui est pertinent :
from dateutil.relativedelta import relativedelta
print(relativedelta(d1, d2))
-> donne "relativedelta(months=+5, days=+9)" qui est peut-être plus
facile à appréhender pour un humain :)
-- DW