2017-05-11 2 views
0

Ich habe ein Event das ich in Python an jedem Wochenende zwischen Freitagmorgen und Sonntagmorgen auslösen möchte.Python setze datetime auf UTC timezone

Ich habe einen Code geschrieben, der auf meiner lokalen Umgebung funktioniert, aber ich fürchte, wenn das Datum in der Produktion bereitgestellt wird, wird das Datum lokalisiert und der Auslöser wird falsch sein. Idealerweise möchte ich, dass alles mit UTC synchronisiert wird, hier ist mein Versuch - ich würde gerne sehen, ob es korrekt ist und ob jemand Feedback darüber hat, wie man es sauberer machen kann.

(Der Code funktioniert für mich, aber ich in der richtigen Zeitzone bin sowieso :))

from datetime import datetime 
def eventTrigger(): 
    if((datetime.weekday(datetime.today()) == 4) and (datetime.now().utcnow.hour) > 9): 
     return True 
    elif ((datetime.weekday(datetime.today()) == 6) and (datetime.now().utcnow.hour) < 10): 
     return True 
    elif (datetime.weekday(datetime.today()) == 5): 
     return True 
    else: 
     return False 

Ich versuchte, die Datetime-Dokumentation zu lesen, aber es ist ziemlich verwirrend.

+0

Ich werde das akzeptieren Antwort, tut mir leid, dass :) – AllynH

Antwort

3

Datums- und Zeitzonen sind verwirrend, es ist gut, dass Sie darauf achten, hier bewusst zu sein.

Zuerst Bibliothek pytz kann helfen

from datetime import datetime 
import pytz 

Dann können Sie today und now Variablen definieren zuverlässig UTC sein, an der Spitze Ihres eventTrigger() mit:

now_utc = datetime.now(pytz.utc) 
today_utc = now_utc.date() 
+0

Großartig, danke! Nur zur Klärung, was ist der Unterschied zwischen der Verwendung: datetime.now (pytz.utc) und: datetime.now(). Utcnow.hour – AllynH

+0

haben Sie beide ausgeführt und die Ausgänge verglichen? –

+1

Ich habe jetzt, es gibt einen Syntaxfehler in: datetime.now(). Utcnow.hour, die nur erschien, wenn ich für das Ereignis getestet ... Ich bin mir sicher, dass ich überprüft, bevor Sie die Frage stellen. Sehr geschätzt Max :) – AllynH

Verwandte Themen