Django时区vs datetime

时间:2014-01-17 16:25:07

标签: python django datetime

所以我有一个在我的数据库中创建一些模型的脚本,我使用datetime而不是timezone。它没有给我一个错误,但我得到以下警告:

/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/models/fields/__init__.py:903: RuntimeWarning: DateTimeField Notification.date_sent received a naive datetime (2014-01-17 16:20:56.524827) while time zone support is active.
  RuntimeWarning)

我的问题是:它有所作为吗?确定我可能会使用timezone,因为用户可能位于不同的时区,但为什么它会给我一个RuntimeWarning效率有很大差异吗?

1 个答案:

答案 0 :(得分:2)

这不是关于效率,而是关于正确性。如错误所示,您的日期时间是天真的,这意味着该日期时间的时区未知。这意味着您的应用程序的其他部分无法正确显示/转换它,因为它们无法解释它所在的时区。

正如the documentation所说:

  

一个天真的对象没有足够的信息来明确地相对于其他日期/时间对象定位自己。天真物体是代表协调世界时(UTC),当地时间还是其他某个时区的时间完全取决于程序,就像程序一样,特定数字是代表米,英里还是质量。天真的物体易于理解和使用,代价是忽略了现实的某些方面。