2017-09-20 4 views
-1

correspond pas J'utilise Python 3.6.2 et suis en train de convertir cette chaîne en utilisant time.strptime:Python 3.6.2 ValueError: données de temps ne formate

2017-08-07 07:09:31.024719+00:00

qui est retourné à partir d'Active Directory à partir d'une requête en utilisant la Module ldap3.

Je les commandes suivantes:

from time import strptime 
strptime('2017-08-07 07:09:31.024719+00:00', '%Y-%m-%d %H:%M:%S.%f%z') 

Et je reçois:

ValueError: time data '2017-08-07 07:09:31.024719+00:00' does not match format '%Y-%m-%d %H:%M:%S.%f%z'

Selon la documentation, je crois que cela devrait fonctionner? En outre, j'ai l'intention d'ajouter un décalage et à cela en utilisant timedelta et ensuite l'afficher à l'utilisateur dans une console.

Répondre

0

Je l'ai fait en python shell et il semble résoudre votre problème, si +00: 00 meens UTC.

import datetime.datetime 
date_string = '2017-08-07 07:09:31.024719+00:00' 
date_string = date_string.replace('+00:00','+0000') 
datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f%z') 

Il retourne:

datetime.datetime(2017, 8, 7, 7, 9, 31, 24719, tzinfo=datetime.timezone.utc) 
+1

Merci, cela a fonctionné pour moi aussi. Et oui, c'était UTC. –

0

La chaîne que vous avez mentionné était un peu bizarre. Vous devez spécifier le +0000 séparément.

>>> strptime('2017-08-07 07:09:31.024719 +0000', '%Y-%m-%d %H:%M:%S.%f %z') 
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=7, tm_hour=7, tm_min=9, tm_sec=31, tm_wday=0, tm_yday=219, tm_isdst=-1)