夏令时问题
在工作中,遇到一个很有意思的关于时间的问题,这里跟大家分享一下。
现象
从数据库里取出用户的生日1990-05-22,接口返回时发现返回值变成了1990-05-21,而对于1992-05-22这样的日期却能正确返回。
网上很多对于相关问题的分析都是简单粗暴的认为是时区的问题,却没有讲明白问题出现的根本原因。
排查过程
问题复现
为了复现问题现象,我们先快速搭建一个 Spring Boot Application。
先将配置文件中对日期类型的格式化配置为 yyyy-MM-dd,如下所示:
1 | spring.jackson.time-zone=GMT+8 |