项目场景:

springboot项目通过时间筛选数据、


问题描述

时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致

接收的参数

@JsonFormat(pattern = "yyyy-MM-dd")
private Date queryDate;

服务器打印日志出来的时间为

Wed Jun 08 00:00:00 UTC 2022

本地打印出来的时间为

Wed Jun 08 00:00:00 CST 2022

数据库连接配置

url: jdbc:mysql://xx/xx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8

原因分析:

UTC时间:世界协调时间(UTC)也就是零时区的时间

CST时间:中央标准时间 Central Standard Time (USA) UT-6:00(美国cst时间:零区时减6个小时)

如:当UTC时间为0点时,中国CST时间为8点,因为零时区和中国北京时区相差8个时区

UTC + 8 就是中国的时间


解决方案:

需要将Linux系统时间Date改为CST

# 备份
mv /etc/localtime /etc/localtime.bak
# 软链接到上海时区文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

springboot服务时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致-LMLPHP

# 更新硬件时间
hwclock -w

使用命令date查看系统当前时间

date

timedatectl查看系统时间概览

timedatectl

springboot服务时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致-LMLPHP

使用命令修改时区后,应用服务可能无法筛选出正确结果,重启应用后恢复正常

06-26 10:21