Ich bin etwas verwirrt wegen der Handhabung von Sommerzeit
settings.py:
TIME_ZONE = "Europe/London"
USE_TZ = True
in der Django-Schale:
>>> from django.utils import timezone
>>> import datetime
>>> print timezone.now()
2012-05-28 11:19:42.897000+00:00
>>> print timezone.make_aware(datetime.datetime.now(),timezone.get_default_timez
one())
2012-05-28 12:20:03.224000+01:00
Warum sind sie nicht in Bezug auf die Sommerzeit identisch? Beide sollten sich bewusst sein, nein?
Ich habe die Dokumente gelesen, bin aber nicht klüger.
Antworten:
54 für die Antwort № 1Gemäß timezone.now()
:
def now():
"""
Returns an aware or naive datetime.datetime, depending on settings.USE_TZ.
"""
if settings.USE_TZ:
# timeit shows that datetime.now(tz=utc) is 24% slower
return datetime.utcnow().replace(tzinfo=utc)
else:
return datetime.now()
Es basiert auf utc
anstelle Ihrer Standardzeitzone. Sie können denselben Wert erreichen, indem Sie verwenden
now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone())
print now.astimezone(timezone.utc)
5 für die Antwort № 2
Seit Django 1.11 kannst du einfach anrufen django.utils.timezone.localtime
holen datetime
für Ihre Standardzeitzone.
>>> from django.utils import timezone
>>> timezone.localtime()
Aus der Dokumentation:
Konvertiert ein bekanntes Datum in eine andere Zeitzone, standardmäßig die aktuelle Zeitzone.
Wenn der Wert weggelassen wird, wird standardmäßig der Wert verwendet
now()
.Diese Funktion funktioniert nicht bei naiven Datumsangaben; benutzen
make_aware()
stattdessen.
0 für die Antwort № 3
from datetime import datetime
from django.utils import timezone
def now():
try:
return timezone.localtime(timezone.now()).strftime("%Y-%m-%dT%H:%M:%S")
except Exception as exp:
print("TimeZone is not set - {}".format(exp))
return datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
Wenn Sie einstellen TIME_ZONE = "Europe/London"
und USE_TZ = True
In Django werden Sie in der try
Abschnitt und sonst, in der except
Sektion.
[HINWEIS]:
.strftime()
ist eine Option- Diese wurden getestet
Python 2.7
undDjango 1.11