J’ai obtenu ce que je souhaitais grâce au module [python-dateutil|http://pypi.python.org/pypi/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@@ $$Si l’on se réferre au [tableau|http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior] pour le formatage des fonctions @@strftime()@@ et @@strptime()@@.$$. 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’
>>>
///