today - timezone django python
django 1.4 timezone.now() vs datetime.datetime.now() (3)
De acuerdo con 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()
Se basa en utc
lugar de su zona horaria predeterminada. Usted podría lograr el mismo valor mediante el uso de
now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone())
print now.astimezone(timezone.utc)
Estoy un poco confundido por el manejo de ahorro de luz del día
settings.py:
TIME_ZONE = ''Europe/London''
USE_TZ = True
en el caparazón django:
>>> 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
¿Por qué no son lo mismo con respecto a los ahorros de luz diurna? Ambos deben ser conscientes de la configuración regional, ¿no?
He leído los documentos pero no soy más sabio.
Desde Django 1.11 puedes simplemente llamar a django.utils.timezone.localtime
para obtener el datetime
para tu zona horaria predeterminada.
>>> from django.utils import timezone
>>> timezone.localtime()
De documentos:
Convierte un horario de atención a una zona horaria diferente, de forma predeterminada, la zona horaria actual.
Cuando se omite el valor, el valor predeterminado es
now()
.Esta función no funciona en fechas de tiempo ingenuas; use
make_aware()
lugar.
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'')
Si configura TIME_ZONE = ''Europe/London''
y USE_TZ = True
en la configuración de Django, lo colocará en la sección de try
y, en caso contrario, en la sección de except
.
[ NOTA ]:
-
.strftime()
es una opción - Estas pruebas en
Python 2.7
yDjango 1.11