Ich möchte die Standardzeitzone (PST) meines Systems von Python erhalten. Wie kann ich das am besten machen? Ich möchte vermeiden, einen anderen Prozess zu forken.
Antworten
Zu viele Anzeigen?Ich habe festgestellt, dass dies gut funktioniert:
import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()
So konnte ich unterscheiden, ob es sich um Sommerzeit handelt oder nicht.
Referenz mit mehr Details: https://stackoverflow.com/a/39079819/4549682
Liefert einen UTC-Offset wie in der Antwort von ThomasH, berücksichtigt aber die Sommerzeit.
>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9
Der Wert von time.timezone
o time.altzone
ist in Sekunden westlich von UTC angegeben (wobei Gebiete östlich von UTC einen negativen Wert erhalten). Dies ist das Gegenteil von dem, was wir eigentlich wollen, daher der * -1.
time.localtime().tm_isdst
ist Null, wenn die Sommerzeit nicht in Kraft ist (obwohl dies möglicherweise nicht korrekt ist, wenn ein Gebiet kürzlich sein Sommerzeitgesetz geändert hat).
EDIT: marr75 hat recht, ich habe die Antwort entsprechend geändert.
Die Codeschnipsel für die Berechnung des Offsets sind falsch, siehe http://bugs.python.org/issue7229 .
Die richtige Vorgehensweise ist:
def local_time_offset(t=None):
"""Return offset of local zone from GMT, either at present or at time t."""
# python2.3 localtime() can't take None
if t is None:
t = time.time()
if time.localtime(t).tm_isdst and time.daylight:
return -time.altzone
else:
return -time.timezone
Dies ist aller Wahrscheinlichkeit nach nicht die exakte Frage, die der OP gestellt hat, aber es gibt zwei fehlerhafte Snippets auf der Seite und Zeitbugs, die aufzuspüren und zu beheben sind.
- See previous answers
- Weitere Antworten anzeigen