Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas
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 :
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
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 :
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.
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 :
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
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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou d'ambiguͯté serait trop important : comment traiter le delta entre 11pm et 1am -> il dépend s'ils sont le même jour ou non... De même, les datetime.time sont vus comme des horaires et non des durées, et donc les ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par cohérence). -- DW
* Nicolas <nicolasp@aaton.com> in fr.comp.lang.python:
>>> 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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou
d'ambiguͯté serait trop important : comment traiter le delta entre 11pm
et 1am -> il dépend s'ils sont le même jour ou non... De même, les
datetime.time sont vus comme des horaires et non des durées, et donc les
ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par
cohérence).
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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou d'ambiguͯté serait trop important : comment traiter le delta entre 11pm et 1am -> il dépend s'ils sont le même jour ou non... De même, les datetime.time sont vus comme des horaires et non des durées, et donc les ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par cohérence). -- DW
Damien Wyart
* Dominique 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
* 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) :
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
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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou d'ambiguͯté serait trop important : comment traiter le delta entre 11pm et 1am -> il dépend s'ils sont le même jour ou non... De même, les datetime.time sont vus comme des horaires et non des durées, et donc les ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par cohérence).
Bonne remarque :)
Le 23/05/2022 Í 12:29, Damien Wyart a écrit :
* Nicolas <nicolasp@aaton.com> in fr.comp.lang.python:
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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou
d'ambiguͯté serait trop important : comment traiter le delta entre 11pm
et 1am -> il dépend s'ils sont le même jour ou non... De même, les
datetime.time sont vus comme des horaires et non des durées, et donc les
ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par
cohérence).
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.
Pour un horaire sans date associée, je pense que le risque d'erreur ou d'ambiguͯté serait trop important : comment traiter le delta entre 11pm et 1am -> il dépend s'ils sont le même jour ou non... De même, les datetime.time sont vus comme des horaires et non des durées, et donc les ajouter n'a pas vraiment de sens (et donc les soustraire non plus, par cohérence).
Bonne remarque :)
Dominique
Le 23/05/2022 Í 13:44, Damien Wyart a écrit :
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.
OK, je comprends mieux parse qui est une fonction de dateutil.
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 :)
Je vous remercie tous pour vos précisions et les options que vous me proposez. Je suis toujours étonné par la richesse de Python :-) Bonne fin de journée, Dominique
Le 23/05/2022 Í 13:44, Damien Wyart a écrit :
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.
OK, je comprends mieux parse qui est une fonction de dateutil.
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) :
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.
OK, je comprends mieux parse qui est une fonction de dateutil.
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 :)
Je vous remercie tous pour vos précisions et les options que vous me proposez. Je suis toujours étonné par la richesse de Python :-) Bonne fin de journée, Dominique