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?Für Python 3.6+ kann dies leicht durch folgenden Code erreicht werden:
import datetime
local_timezone = datetime.datetime.utcnow().astimezone().tzinfo
print(local_timezone)
Aber mit Python < 3.6 rufen astimezone()
auf naive datetime funktioniert nicht. Also müssen wir es auf eine etwas andere Weise machen.
Also für Python 3.x,
import datetime
local_timezone = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo
print(local_timezone)
Beispielhafte Ausgabe:
Auf dem niederländischen Server (Python 3.6.9): CEST
Auf Bangladesh Server (Python 3.8.2): +06
Weitere Einzelheiten finden Sie auf dieser Seite Gewinde .
Um die Zeitzoneninformationen in Form einer datetime.tzinfo
Objekt, verwenden Sie dateutil.tz.tzlocal()
:
from dateutil import tz
myTimeZone = tz.tzlocal()
Dieses Objekt kann in der tz
Parameter von datetime.datetime.now()
:
from datetime import datetime
from dateutil import tz
localisedDatetime = datetime.now(tz = tz.tzlocal())
oder die tz
Parameter von datetime
Objekt über datetime.datetime.astimezone()
:
from datetime import datetime
from dateutil import tz
unlocalisedDatetime = datetime.now()
localisedDatetime = unlocalisedDatetime.astimezone(tz = tz.tzlocal())
Abgleich mit UTC als timedelta
:
from datetime import datetime, timezone
now = datetime.now()
now.replace(tzinfo=timezone.utc) - now.astimezone(timezone.utc)
Oder so (obskurer, funktioniert aber auch):
datetime.now(timezone.utc).astimezone().tzinfo.utcoffset(None)
Beide Lösungen führen zu demselben Ergebnis. Zum Beispiel: datetime.timedelta(seconds=7200)
- See previous answers
- Weitere Antworten anzeigen