J'ai un système (développé en Python) qui accepte datetime en tant que chaîne dans divers formats et je dois analyser eux..Les formats de chaîne datetime sont actuellement:
Fri Sep 25 18:09:49 -0500 2009
2008-06-29T00:42:18.000Z
2011-07-16T21:46:39Z
1294989360
Maintenant, je veux un analyseur générique qui peut convertir l'un de ces formats datetime en objet datetime approprié ...
Sinon, je dois aller les analyser individuellement. Veuillez donc également fournir une méthode pour les analyser individuellement (s'il n'y a pas d'analyseur générique) .. !!
Comme l'a suggéré @TimPietzcker, le paquet dateutil est la voie à suivre, il gère les 3 premiers formats correctement et automatiquement:
>>> from dateutil.parser import parse
>>> parse("Fri Sep 25 18:09:49 -0500 2009")
datetime.datetime(2009, 9, 25, 18, 9, 49, tzinfo=tzoffset(None, -18000))
>>> parse("2008-06-29T00:42:18.000Z")
datetime.datetime(2008, 6, 29, 0, 42, 18, tzinfo=tzutc())
>>> parse("2011-07-16T21:46:39Z")
datetime.datetime(2011, 7, 16, 21, 46, 39, tzinfo=tzutc())
Le format unixtime, il semble s'améliorer, mais heureusement, le standard datetime.datetime
est prêt pour la tâche:
>>> from datetime import datetime
>>> datetime.utcfromtimestamp(float("1294989360"))
datetime.datetime(2011, 1, 14, 7, 16)
Il est assez facile d'en faire une fonction qui gère les 4 formats:
from dateutil.parser import parse
from datetime import datetime
def parse_time(s):
try:
ret = parse(s)
except ValueError:
ret = datetime.utcfromtimestamp(s)
return ret
Vous devriez regarder dans le paquet dateutil
.