Sujet : Re: Écart entre deux dates.
De : nicolasp (at) *nospam* aaton.com (Nicolas)
Groupes : fr.comp.lang.pythonDate : 23. May 2022, 10:23:13
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <628b446a$0$22071$426a74cc@news.free.fr>
References : 1
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0
Bonjour,
Le 22/05/2022 à 16:15, Dominique a écrit :
Bonjour,
Dans Linux référence spécial Python, il est proposé des exercices que je fais.
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...)
Je ne suis pas allé voir la documentation, mais visiblement, la fonction parser.parse() convertit une chaine de caractères en date (au format utilisé par dateutil).
L'aide (help('parser')) ne m'éclaire pas beaucoup...
help('parser') (avec des cotes) renvoie l'aide d'une fonctionnalité interne de Python :
>>> help('parser')
Help on built-in module parser:
NAME
parser - This is an interface to Python's internal parser.
La bonne syntaxe est sans les cotes :
help(parser)
J'ai évité astropy avec les calculs de jours juliens. Ça aurait ajouté de la complication, je pense.
A noter que la bibliothèque standard de Python permet de manipuler du temps et des dates :
>>> import datetime
>>> dt1 = datetime.datetime.now()
>>> dt2 = datetime.datetime.now()
>>> dt2 - dt1
datetime.timedelta(0, 5, 799467)
>>> d1 = datetime.datetime.now().date()
>>> d2 = datetime.datetime.now().date()
>>> d2 - d1
datetime.timedelta(0)
>>> t1 = datetime.datetime.now().time()
>>> t2 = datetime.datetime.now().time()
>>> t2 -t1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
De façon surprenante, la différence sur des temps n'est pas implémentée.
Nicolas
En vous remerciant,
Dominique