django存储到数据库的时间比本地时间少8个小时?
作者怀疑 Django之前的版本中应该是没有对时区做出限制,数据库里存储的通常是本地时间。
Django存储到数据库中的时间永远是UTC时间。这时如果settings里面设置了
TIME_ZONE = 'UTC'
USE_TZ = True
用datetime.datetime.now()获取的时间,Django会把这个时间当成UTC时间存储到数据库中去。如果修改设置为
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True
再次用datetime.datetime.now()获取时间,django会把这个时间当成东八区时间,但jango还是会把这个时间转换成UTC的时间存储到数据库中,而读取的时候还是直接按照UTC时间读出来,这就是网上很多人遇到的存储到数据库中的时间比本地时间会少8个小时的原因。