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

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

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

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

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

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

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