关于 @JsonFormat(pattern = “yyyy.MM.dd“, timezone = “GMT+8“) 页面显示日期比数据库日期小一天的原因

一篇关于web系统中因夏令时导致用户生日显示错误的技术博客。用户生日在夏令时期间,前端显示比实际早一天。问题源在于@JsonFormat处理日期时,默认时间是0点并减去1小时,导致日期提前。解决方案是调整日期处理方式以避免夏令时影响。
摘要由CSDN通过智能技术生成

记录一下项目中遇到的诡异的问题:

今天有用户反映web系统中,自己的生日显示不正确,比如说生日是1991-05-17,但是页面上显示的是1991.05.16,运行sql语句,查到的结果也是1991-05-17,但是展示在页面上就不正确,其他用户显示是正常的,所以就怀疑是给前端返回字段的时候经过了某些处理。下图是代码,但是一想,如果代码处理有问题,那其他用户的也不会显示正确啊,后来将显示正确的生日复制给显示错误的用户,就显示正常了,不会差一天,所以怀疑是这个教师的生日问题,但是!人家生日做错了什么哈哈,所以就朝着这个方向去查,经过一番苦苦搜索,终于找到了问题,是夏令时的问题!!!!

  在实行夏时制期间出生者,其实际出生时间应为当时的出生时间须减去1小时,比方说夏令时公历1991年5月2日0点10分出生,转换为北京时间为1991年5月1日23点10出生。@JsonFormat包含了处理夏令时的问题。

这位用户出生日期正好在夏令时的这几个月份中,而且用户填写生日的时候,前端控件只让填了年月日,没有填写时分秒,所以@JsonFormat应该会默认是0点,然后减去1小时,所以就会提前一天。如果想显示正确的话,可以换个其他的方式。

 

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值