2016-05-09 6 views
3

Python dateutil analyse correctement les chaînes à l'exception du composant secondes de la chaîne.Python dateutil parser analyse le mauvais nombre de secondes

In [1]: from dateutil import parser 
In [2]: parser.parse("05/09/2016 16:04.18") 
Out[2]: datetime.datetime(2016, 5, 9, 16, 4, 10) 

dateutil.parser est l'analyse 16: 04,18 jusqu'à 16 heures, 4 minutes et 10 secondes , quand il doit être 18 secondes. Que se passe t-il ici?

Répondre

5

L'analyseur ne sait pas interpréter cette dernière partie non-standard du temps. Le . au lieu d'un : le rejette. Essayez d'utiliser parser.parse("05.09/2016 16:04:18") à la place.

Vous pouvez également utiliser le module datetime à la place, car il peut être personnalisé avec un masque pour gérer tout format de date et d'heure.

from datetime import datetime 
date_object = datetime.strptime("05/09/2016 16:04.18", '%m/%d/%Y %H:%M.%S') 
+1

On dirait que lorsque vous utilisez deux points, il se lit comme dateutil.parser secondes, mais lorsque vous utilisez une période, il se lit comme dateutil.parser centièmes de minute. – Josh

+0

Oui, on dirait que tu as raison. Il lit comme des centièmes de minute et tronque ensuite la valeur. –