2016-07-04 5 views
5

J'essaye de créer simplement un datetime objet à partir de la date suivante: 'Fri Mar 11 15:59:57 EST 2016' en utilisant le format: '% a% b% d% H:% M:% S% Z% Y'.ValueError data data 'Fri Mar 11 15:59:57 EST 2016' ne correspond pas au format '% a% b% d% H:% M:% S% Z% Y'

Voici le code.

from datetime import datetime 
date = datetime.strptime('Fri Mar 11 15:59:57 EST 2016', '%a %b %d %H:%M:%S %Z %Y') 

Cependant, il en résulte un ValueError comme indiqué ci-dessous. Peut-être qu'il me manque quelque chose qui ne va manifestement pas avec ma chaîne de format, mais je l'ai vérifié encore et encore. Toute aide serait grandement appréciée, merci.

Modifier pour tenir compte des commentaires/questions pour plus d'informations:

La version Python J'utilise est 2.7.6.

En utilisant la commande 'locale' sur Ubuntu 14.04, je reçois ceci:

$ locale 
LANG=en_US.UTF-8 
LANGUAGE= 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 
+2

J'ai essayé votre code et cela fonctionne pour moi; quelle version de Python utilisez-vous? –

+0

J'utilise Python 2.7.6 –

+0

Par hasard, utilisez-vous un ordinateur qui utilise un paramètre régional autre que l'anglais? –

Répondre

8

Pour le spécificateur Z%, strptime ne reconnaît que "UTC", "GMT" et tout ce qui est en time.tzname (donc si elle reconnaît "EST" dépendra du fuseau horaire de votre ordinateur). C'est issue 22377.

Voir: Python strptime() and timezones? et Parsing date/time string with timezone abbreviated name in Python?

La meilleure option pour analyser les fuseaux horaires qui comprennent une zone de temps lisible par l'homme est encore d'utiliser le tiers bibliothèque python-dateutil:

import dateutil 
date = dateutil.parse('Fri Mar 11 15:59:57 EST 2016' 

Si vous ne pouvez pas installer python -dateutil, vous pouvez supprimer le fuseau horaire et l'analyser manuellement en utilisant une recherche de dictionnaire.

+0

Le problème se produit également ici. En effet, j'ai pensé que le problème était la sous-chaîne 'EST' et vous venez de confirmer le problème. Dans ce cas, existe-t-il un moyen sûr d'analyser ces chaînes et d'éviter ce problème? –

+1

@ JeandersonBarrosCândido la meilleure option est d'utiliser python-dateutil. J'ai mis à jour ma réponse pour ajouter cela, merci. – ecatmur

+0

C'était tout. Merci! –