我有一个名为Vote的模型,它有一个字段date:
date = models.DateTimeField(auto_now_add=True)添加元素时,MySQL中的日期是协调世界时的日期,但我住在UTC+2时区
我想我在settings.py中正确设置了时区:
TIME_ZONE = 'Europe/Paris'Python使用正确的时区:
>>> print datetime.datetime.now()
2013-07-03 09:05:04.474000MySQL也是:
> SELECT NOW( )
2013-07-03 09:00:48我可以手动设置日期属性,它是有效的,但我想知道为什么auto_now_add返回错误的日期,尽管python和mysql使用正确的时区。
谢谢
发布于 2013-07-03 15:34:41
这是一个需要解释的复杂绑定。来自Django 1.4,
当USE_TZ为False时,是Django将存储所有日期时间的时区。当USE_TZ为True时,this是默认时区,Django将使用该时区在模板中显示日期时间并解释在表单中输入的日期时间。
此引用TIME_ZONE。那么你的USE_TZ是什么呢?
这是因为,如果您稍后在另一个地区托管站点时更改了您的TIME_ZONE,则很容易将任何日期时间从协调世界时转换为任何给定的时区。
在Django 1.3和更早版本中,
请注意,this是Django将所有日期/时间转换到的时区-不一定是服务器的时区。例如,一台服务器可以为多个Django支持的站点提供服务,每个站点都有单独的时区设置。
因此,您的所有视图和模型都将自动在正确的时区中运行。
但不会告诉您日期时间将存储在数据库中的哪个时区。无论如何都需要试验一下(我猜是UTC)。
除非您通过manage.py shell打开了python控制台,否则print datetime.datetime.now()会根据服务器机器的时区设置打印数据。
MySQL控制台也是如此。
https://stackoverflow.com/questions/17441812
复制相似问题