2012-06-21 15 views
5

Es fällt mir schwer, eine Zeichenfolgedarstellung von Nicht-UTC-Zeiten aufgrund der Zeitzonenabkürzung in UTC zu konvertieren.Nicht-UTC-Zeit-String mit Zeitzonenabkürzung in UTC-Zeit in Python umwandeln, während die Sommerzeit berücksichtigt wird

(Update:.. Es scheint, dass die timezone abbreviations may not be unique wenn ja, vielleicht sollte ich auch dies zu berücksichtigen versuchen)

Ich habe versucht, um diese mit datetutil nach einem Weg zu suchen und pytz, aber hatte kein Glück.

Vorschläge oder Workaround würden geschätzt werden.

string = "Jun 20, 4:00PM EDT" 

würde Ich mag, dass die Zeit in UTC konvertieren, für den Sommer Buchhaltung, wenn angemessen.

UPDATE: einige Referenzen gefunden, dass erfahrene Benutzer beantworten kann helfen, die Frage:

Im Wesentlichen würde ich Teil der Lösung tut das Gegenteil von this vorstellen.

FINAL UPDATE (WICHTIG)

vom dateutil docs examples genommen.

Einige einfache Beispiele basieren auf dem Befehl date und verwenden das Wörterbuch TZOFFSET, um den Offset der BRST-Zeitzone bereitzustellen.

parse ("Do 25 Sep 10.36.28 BRST 2003" tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, Tzinfo = tzoffset ('BRST', -10800))

parse ("2003 10.36.28 BRST 25 Sep Do", tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, tzinfo = tzoffset ('BRST', -10800))

Kombinieren Sie dies mit einer Bibliothek such as found here. und Sie werden eine Lösung für dieses Problem haben.

+0

Welcher Wert sollte für das Jahr verwendet werden? Strom? – Bryan

+0

@Beargle - ja. Ich würde für alle diese Ausgänge Strom annehmen. – snakesNbronies

+0

Ja, Zeitzonenabkürzungen sind nicht einzigartig auf der Welt. Kannst du ein Land annehmen? –

Antwort

5

Mit Nas Banov's excellent dictionary Mapping Zeitzone Abkürzungen Offset zu UTC:

import dateutil 
import pytz 

# timezone dictionary built here: https://stackoverflow.com/a/4766400/366335 
# tzd = {...} 

string = 'Jun 20, 4:00PM EDT' 
date = dateutil.parser.parse(string, tzinfos=tzd).astimezone(pytz.utc) 
+0

Ich war gerade dabei um mit einem Update über die Bibliotheken zurückzukommen. – snakesNbronies