Transformer des dates avec le module python-dateutil
Par olivier le mercredi 13 février 2013, 21:10 - Programmation - Lien permanent
Récemment, j'ai eu besoin de transformer des dates écrites dans ce format : Wed, 13 Feb 2013 05:34:15 +0100
en quelque chose de plus « normé », ISO 8601.
J'ai obtenu ce que je souhaitais grâce au module python-dateutil, et je tiens à vous en faire profiter grâce à un exemple.
Au départ j'ai des dates sous cette forme Wed, 13 Feb 2013 05:34:15 +0100 que l'on peut schématiser de cette façon %a, %d %b %Y %H:%M:%S %z
[1]. Je voulais quelque chose proche de la norme iso 8601, soit ça : %Y-%m-%dT%H:%M
ou pour reprendre l'exemple, 2013-02-13T05:34.
Voilà ce que cela donne dans une session interactive Python (dans un programme, on peut créer une fonction).
olivier@tuborg:~ $ python Python 2.7.3 (default, Jun 25 2012, 07:16:42) [GCC 4.2.2 20070831 prerelease [FreeBSD]] on freebsd8 Type "help", "copyright", "credits" or "license" for more information. >>> import datetime >>> import dateutil.parser >>> >>> s = 'Wed, 13 Feb 2013 05:34:15 +0100' >>> dt = dateutil.parser.parse(s) >>> dt datetime.datetime(2013, 2, 13, 5, 34, 15, tzinfo=tzoffset(None, 3600))
Avant d'aller plus je vais expliquer les grandes lignes du programme.
- Les lignes commençant par import .... permettent de charger les modules qui vont nous être utiles
- s est une variable, elle représente la date à transformer
- dt est un objet datetime.datetime que l'on va pouvoir manipuler grâce aux fonctions du module
datetime
On peut supprimer l'information du fuseau horaire.
>>> dt = dateutil.parser.parse(s, ignoretz=True) >>> dt datetime.datetime(2013, 2, 13, 5, 34, 15)
Il nous reste plus qu'à « formater » notre objet datetime.datetime
.
>>> dt.strftime('%Y-%m-%dT%H:%M') '2013-02-13T05:34' >>>