2016-07-04 11 views
5

Próbuję po prostu utworzyć datę i godzinę obiekt od następującej daty: "Fri Mar 11 15:59:57 EST 2016" z wykorzystaniem formatu: "% a% b% d% H:% M:% S% Z% Y".Dane czasu ValueError "Fri Mar 11 15:59:57 EST 2016" nie pasuje do formatu "% a% b% d% H:% M:% S% Z% Y"

Oto kod.

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

Jednak powoduje to błąd ValueError, jak pokazano poniżej.

ValueError: time data 'Fri Mar 11 15:59:57 EST 2016' does not match format '%a %b %d %H:%M:%S %Z %Y' 

Być może brakuje mi czegoś oczywiście nie tak z moim ciągiem formatującym, ale sprawdziłem to w kółko. Każda pomoc będzie bardzo ceniona, dzięki.

Edit odzwierciedlać uwagi/pytania, aby uzyskać więcej informacji:

wersja Pythona używam to 2.7.6.

Korzystanie polecenie 'locale' na Ubuntu 14.04 uzyskać to:

$ 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

Wypróbowałem twój kod i działa on dla mnie; jakiej wersji Pythona używasz? –

+0

Używam Python 2.7.6 –

+0

Czy przypadkiem używasz komputera, który używa ustawienia narodowego innego niż angielski? –

Odpowiedz

8

Dla specyfikatorem% Z, strptime rozpoznaje tylko "UTC", "GMT" i co jest w time.tzname (tak czy uznaje "EST" będzie zależeć od strefy czasowej komputera). To jest issue 22377.

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

Najlepszym rozwiązaniem dla parsowania strefy czasowe, które zawierają postaci czytelnej dla człowieka strefę czasową jest nadal w użyciu innego podmiotu python-dateutil Biblioteka:

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

Jeśli nie można zainstalować Pythona -dateutil, możesz rozebrać strefę czasową i parsować ją ręcznie, np za pomocą wyszukiwania słownika.

+0

Problem występuje również tutaj. Rzeczywiście, doszedłem do wniosku, że problemem jest podciąg 'EST' i właśnie potwierdziłeś problem. Czy w takim przypadku istnieje bezpieczny sposób na przeanalizowanie tych łańcuchów i uniknięcie tego problemu? –

+1

@ JeandersonBarrosCândido najlepszą opcją jest użycie python-dateutil. Zaktualizowałem moją odpowiedź, aby to dodać, dzięki. – ecatmur

+0

To było to. Dzięki! –

Powiązane problemy