web-dev-qa-db-fra.com

Analyser datetime en Python ..?

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) .. !!

42
Ramandeep Singh

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
57
Kimvais

Vous devriez regarder dans le paquet dateutil .

15
Tim Pietzcker