2016-06-11 8 views
2

Mein Gastgeber hat UTC-Zeitzone und ich versuche, PDT Zeit Zeichenfolge Datum Zeit Objekt zu konvertieren, ich den unten angegebenen Code-Schnipsel verwendet haben, aber es hatPython: Konvertieren Zeit Zeichenfolge mit unterschiedlicher Zeitzone zu Host Zeitzone Datetime-Objekt?

datetime_obj = datetime.datetime.strptime('Thu Jun 09 08:28:12 PDT 2016', '%a %b %d %H:%M:%S %Z %Y') 

ich diesen Fehler nicht gearbeitet bin immer -

ValueError: time data 'Thu Jun 09 08:28:12 PDT 2016' does not match format '%a %b %d %H:%M:%S %Z %Y'

Ich habe es, dass es ist, weil die Zeitzone meines Hosts UTC ist. Aber ich bin nicht in der Lage, den Weg zu finden, um dieses Problem zu lösen. Ich muss PDT-Zeichenfolge in UTC-Zeitzone konvertieren.

Ich bin blockiert. Jede Hilfe wird geschätzt.

+0

Woher wird das lokale Zeitobjekt generiert? Der 'PDT' Teil ist warum es nicht richtig funktioniert. –

+0

mein Host ist auf UTC, wo ich den obigen Code laufen lasse, und Zeit Zeichenfolge, die ich von einem anderen Service bekomme –

+0

Sie werden wahrscheinlich den PDT-Teil lokalisieren oder konvertieren müssen, bevor Sie versuchen, es mit Datetime zu formatieren. –

Antwort

1

Sie können viele verschiedene Werte in TZINFOS haben. Dadurch wird Ihr Code nicht fehlschlagen, wenn er auf verschiedene Zeitzonen trifft.

Parsen Sie die Zeichenfolge und konvertieren PDT Datetime zu UTC wird unten erläutert.

import pytz 
import dateutil.parser 
TZINFOS = { 'PDT': pytz.timezone('US/Pacific')} 
datetime_obj = dateutil.parser.parse('Thu Jun 09 08:28:12 PDT 2016', tzinfos= TZINFOS) 
print datetime_obj 
datetime_in_utc = datetime_obj.astimezone(pytz.utc) # convert to UTC 
print datetime_in_utc 

Und print pytz.all_timezones wird Ihnen alle möglichen Werte geben.

+0

Wie kommt diese spezifische Struktur "TZINFOS = {'PDT': pytz.timezone ('US/Pacific')}} von TZINFOS Arbeit. Können Sie erklären ? –

+0

Dieses Argument ordnet Zeitzonennamen Zeitzonen zu. Siehe http://dateutil.readthedocs.io/en/stable/parser.html –

+0

danke für die Lösung! –