setting设置
- 在settings.py文件中将USE_TZ设置为False,将TIME_ZONE设置为亚洲上海,之后我们在模型中创建时间字段的时候,在数据库中存储的就是东八区的时间,而时间的类型会使navie类型,所以我们就不能再把navie类型的时间转换成其他时区的类型,所以我们一般不建议这么做。
- Django在1.4版本之后存储如果设置了USE_TZ=True,则存储到数据库中的时间永远是UTC时间。这时如果settings里面设置了USE_TZ=True与TIME_ZONE = ‘UTC’,用datetime.datetime.now()获取的时间django会把这个时间当成UTC时间存储到数据库中去。如果修改设置为USE_TZ=True与TIME_ZONE = ‘Asia/Shanghai’,用datetime.datetime.now()获取的时间由于不带时区,django会把这个时间当成Asia/Shanghai时间,即东八区时间,然后django会把这个时间转成带时区UTC时间存储到数据库中去,而读的时候直接按UTC时间读出来,这就是网上很多人遇到的存储到数据库中的时间比本地时间会小8个小时的原因。
时间的使用
from django.utils.timezone import localtime
#将数据库中的时间转换为当地时间时间=localtime(数据库中取出的时间)
以下转自django文档django时区