Qual é o datetime correto?

43 views
Skip to first unread message

Rick Deckard

unread,
May 15, 2013, 9:59:50 PM5/15/13
to django...@googlegroups.com
Pessoal, 

Estou com dificuldade para entender qual método deve ser utilizado para datetime.

Inicialmente usei apenas a API do Python: 

import datetime
datetime.datetime.now()

Mas ai recebo um warning devido ao time zone configurado no settings do Django:

RuntimeWarning: DateTimeField received a naive datetime (2013-05-15 22:28:57.916805) 
while time zone support is active.


Pesquisando na documentação encontrei esta forma[1]:

import datetime
from django.utils.timezone import utc
datetime.datetime.utcnow().replace(tzinfo=utc)


Porem, no tutorial do Django em um exemplo é utilizado desta forma[2]:

from django.utils import timezone
timezone.now()


Então não sei qual dessas alternativas utilizar. Alguem sabe explicar se existe
diferenças ou vantagens entre um método ou outro?

abs

Leonardo da Costa Santos

unread,
May 25, 2013, 1:50:02 PM5/25/13
to django...@googlegroups.com
Com o django 1.4 e 1.5, você pode fazer assim:

from django.utils.timezone import utc
from django.conf import settings
from datetime import datetime

if settings.USE_TZ:
    now = datetime.utcnow().replace(tzinfo=utc)
else:
    now = datetime.now()

Atenciosamente,

Leonardo da Costa Santos
Desenvolvedor na SODAVirtual
Bacharel em Sistemas de Informação pela FIP


2013/5/15 Rick Deckard <decka...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Rick Deckard

unread,
May 29, 2013, 9:06:03 PM5/29/13
to django...@googlegroups.com
@Leonardo valeu pela ajuda, muito boa!

Só fiquei confuso sobre o tutorial do Django que usa desta forma:

from django.utils import timezone
timezone.now()

Isso só funciona se o USE_TZ for True?

Heigler

unread,
May 31, 2013, 10:39:13 AM5/31/13
to django...@googlegroups.com
Opa Rick,

O timezone.now() faz exatamente o que o Leonardo sugeriu naquele código, na verdade é um shortcut pra sempre usar o formato configurado no seu settings, por isso é bom usá-lo pra não misturar "naive" com "aware".
Dessa forma use: timezone.now()

Abs,
Reply all
Reply to author
Forward
0 new messages