Python Timezone.now()与datetime.datetime.now()的比较

Python Timezone.now()与datetime.datetime.now()的比较,python,django,datetime,django-timezone,Python,Django,Datetime,Django Timezone,我应该什么时候使用django的timezone.now(),什么时候使用python的datetime.datetime.now() 例如,在下面的INSERT中,哪个更有意义 - Product.objects.create(title='Soap', date_added=datetime.datetime.now()) - Product.objects.create(title='Soap', date_added=timezone.now()) 什么时候使用它们有经验法则吗?只要始

我应该什么时候使用django的
timezone.now()
,什么时候使用python的
datetime.datetime.now()

例如,在下面的
INSERT
中,哪个更有意义

- Product.objects.create(title='Soap', date_added=datetime.datetime.now())
- Product.objects.create(title='Soap', date_added=timezone.now())

什么时候使用它们有经验法则吗?

只要始终使用
时区。now()
。Django现在有时区支持,需要时区“感知”datetime对象
datetime.now()
将返回时区初始对象,而
timezone.now()
将返回时区感知对象


您可以在shell中编写,例如:

timezone.datetime.now() < timezone.now() 

它们是不同的对象,只有时区。如果您想使用UTC,并且您使用的是Python 3.2或更高版本,则now()具有UTC支持

import datetime
datetime.datetime.now(datetime.timezone.utc)

这将为您提供一个支持时区的UTC日期时间。

更准确地说,
timezone.now()
将根据
USE\TZ
设置返回一个朴素的或支持时区的
datetime
。您能给我指一个资源,我可以从中了解更多信息吗?当然:django 1.9链接已断开,因此,我添加了一个指向当前稳定的docsCan的链接,您可以详细说明UTC支持的含义吗?来自Django文档:Python的datetime.datetime对象具有一个tzinfo属性,可用于存储时区信息,表示为datetime.tzinfo子类的一个实例。当设置此属性并描述偏移量时,datetime对象是可感知的。否则,这就太天真了。“only timezone.now()具有UTC支持”意味着“only timezone.now()具有tzinfo属性”
import datetime
datetime.datetime.now(datetime.timezone.utc)