Django中datetime入库问题

今天在写代码中遇到了时间字段写入数据库不准确的问题, 这里简单记录下.

python中的时间

python中的时间获取与处理主要是通过datetime模块来完成. 值得注意的一点是: 通过datetime.now()获得的系统时间是不包含时区信息的.

有关模块和系统时间的关系, 这里有篇文章做了很好的总结, 推荐一下.

django中遇到的问题

django中的配置文件里面的TIME_ZONEUSE_TZ选项会影响时间的获取以及相关操作, 之前遇到问题查阅下文档还是没有抓住重点.

还是回归问题, 在django中使用datetime.now()获取的时间对象来设置model属性, 在入库的时候遇到了这样的警告(以后一定要多关注警告信息):

1
2
RuntimeWarning: DateTimeField received a naive datetime (2015-06-24 14:40:52.857778) 
while time zon e support is active.

网上搜一下, 很快就可以找到原因与解答. 结合这个加上官方的文档, 可以非常清楚地找到解决办法. 方法一: 修改配置文件中的USE_TZ. 方法二: 使用django自己的包含时区的时间类.

Comments