2017-07-26 3 views
0

Wie analysiere ich dieses Datum und diese Uhrzeit mit der Zeitzone?Parsing Datetime in Python mit Zeitzone

date_time=datetime.strptime("2017-06-04T01:00:00+04:00", '%Y-%m-%dT%H:%M:%S%Z') 

ich Störung erhalte wie

ValueError: time data '2017-06-04T01:00:00+04:00' does not match format '%Y-%m-%dT%H:%M:%S %Z '

während ich "% Z" der Fehler entfernen ist wie

ValueError: unconverted data remains: +04:00 

Ich denke, der Fehler bei der Formatierung Zeitzone ist. Bitte helfen Sie dabei.

Antwort

0

Es scheint mir nicht, dass strptime eine Richtlinie zur Bewältigung von Zeitzoneninformationen in diesem Format hat. Der Teil der Zeichenfolge, der die Zeitzone angibt, muss ohne den Doppelpunkt sein.

>>> from datetime import datetime 
>>> datetime.strptime("2017-06-04T01:00:00+0400", '%Y-%m-%dT%H:%M:%S%z') 
datetime.datetime(2017, 6, 4, 1, 0, tzinfo=datetime.timezone(datetime.timedelta(0, 14400))) 

Sie können das Datum mit einem regex natürlich Vorprozess arrangieren:

>>> re.sub(r'(?<=[+=][0-9]{2}):', '', "2017-06-04T01:00:00+04:00") 
'2017-06-04T01:00:00+0400' 

Wenn Sie sich die Verwendung einer Bibliothek ermöglichen, die nicht Teil der Standardverteilung ist dann geeignet Pfeil wäre Dafür ist es besonders gut mit Zeitstempeln.

>>> import arrow 
>>> arrow.get("2017-06-04T01:00:00+04:00") 
<Arrow [2017-06-04T01:00:00+04:00]> 
1

können Sie analysieren dateutil package

import dateutil.parser 

dateutil.parser.parse('2008-09-03T20:56:35.450686Z') 

datetime.datetime(2017, 6, 4, 1, 0, tzinfo=tzoffset(None, 14400)) 

für Installationspaket

pip install python-dateutil 
mit