关于springboot返回时间相差8小时的问题研究

url使用serverTimezone=UTC,最终返回的时间和数据库时间一样,外表看起来没有错,但是实际在整个逻辑流转中时间都是以多8小时存在。
即:读取的时间是错的,比数据库多8小时,返回的时间又是对的,与数据库一样。

原因:指定url为UTC时区去数据库查时间,返回时间会在数据库记录中当前时间的基础上加上系统时区时间(mysql时区默认是系统时区),即n+8。但是@ResponseBody返回数据时,使用的是jackson。jackson默认使用的是UTC时区,又减去8小时,所以外表看起来没有错。

标准做法:
1.指定url的serverTimezone=Asia/Shanghai保证读取的时间正确。【表示以+8时区查询mysql数据库,因为mysql时区默认的就是系统时区(咱们的系统时区就是+8)】
2.指定spring.jackson.time-zone=Asia/Shanghai保证返回时间正确。【否则使用默认UTC时区,对当前正确时间减去8小时】
#   注意:在使用spring.jackson.time-zone,必须先使用spring.jackson.date-format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值