django存储到数据库的时间比本地时间少8个小时?(2021-05-12更新)

本文探讨了Django在存储时间到MySQL数据库时出现的8小时时差问题。Django始终存储UTC时间,即使设置了TIME_ZONE为'Asia/Shanghai'。当获取时间使用datetime.datetime.now()时,Django会将时间转换为UTC存储,导致读取时出现时差。解决方案是使用django.util.timezone.now()获取UTC时间,确保时间处理一致性。同时,文章提到了一种新的URL参数方法避免服务器时区配置问题。
摘要由CSDN通过智能技术生成

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个小时的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值