Saltar al contenido

django 1.4 timezone.now () frente a datetime.datetime.now ()

Solución:

De acuerdo a timezone.now() fuente:

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 en lugar de tu zona horaria predeterminada. Podrías lograr el mismo valor usando

now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone())
print now.astimezone(timezone.utc)

Desde Django 1.11, simplemente puede llamar django.utils.timezone.localtime ir a buscar datetime para su zona horaria predeterminada.

>>> from django.utils import timezone
>>> timezone.localtime()

De los documentos:

Convierte una fecha y hora consciente en 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 con fechas ingenuas; usar make_aware() en lugar de.

Puedes pasar un parámetro a datetime.datetime.now():

import pytz, datetime
utc = pytz.utc
utc_now = datetime.datetime.now(tz=utc)

O usar timezone, a la:

from django.utils import timezone

now = timezone.now()

https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *