2016-06-29 15 views
1

Ich versuche, eine Funktion zu schreiben, die eine Zeichenkette Datum/Uhrzeit von lokaler Zeit in UTC in Python konvertiert.Wie kann ich eine Datum/Uhrzeit-Zeichenfolge in lokaler Zeit in UTC in Python konvertieren?

Nach this question können Sie time.tzname verwenden, um einige Formulare der lokalen Zeitzone zu erhalten, aber ich habe keine Möglichkeit gefunden, dies in keiner der Datetime-Konvertierungsmethoden zu verwenden. Zum Beispiel, this article zeigt, gibt es ein paar Dinge, die Sie tun können mit pytz und datetime um Zeiten zu konvertieren, aber alle von ihnen haben Zeitzonen, die fest codiert sind und von anderen Formaten als was time.tzname zurückgibt.

Zur Zeit habe ich den folgenden Code einen String formatiert Zeit in Millisekunden (Unix-Epoche), zu übersetzen:

local_time = time.strptime(datetime_str, "%m/%d/%Y %H:%M:%S") # expects UTC, but I want this to be local 
dt = datetime.datetime(*local_time[:6]) 
ms = int((dt - datetime.datetime.utcfromtimestamp(0)).total_seconds() * 1000) 

Dies ist jedoch die Zeit erwartet Eingabe als UTC zu sein. Gibt es eine Möglichkeit, die string-formatierte Zeit so zu konvertieren, als wäre sie in der lokalen Zeitzone? Vielen Dank.

Im Wesentlichen möchte ich in der Lage sein zu tun, was this answer tut, aber anstatt hart in "America/Los_Angeles" Codierung, möchte ich in der Lage sein, die lokale Zeitzone dynamisch anzugeben.

+0

von Zeit Import gmtime, Strftime LocTime = strftime ("% a,% d% b% Y% H:% M:% S ") GMTime = strftime ("% Y% m% TT% H:% M:% S (GMT) ", gmtime()) print" Lokal: ", LocTime print" UTC: ", GMTime –

+0

Sie möchten von der lokalen Zeit 2 utc konvertieren? –

+0

Sie können Zeitzone mit bekommen: tz = strftime ("% Z") –

Antwort

1

Wenn ich Ihre Frage richtig verstehen wollen Sie dies:

from time import strftime,gmtime,mktime,strptime 

# you can pass any time you want 
strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(strptime("Thu, 30 Jun 2016 03:12:40", "%a, %d %b %Y %H:%M:%S")))) 

# and here for real time 
strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(strptime(strftime("%a, %d %b %Y %H:%M:%S"), "%a, %d %b %Y %H:%M:%S")))) 
+0

Super danke! Die erste Konvertierung hat, was ich gesucht habe. – Logan