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

项目场景:

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

在这里插入图片描述

# 更新硬件时间
hwclock -w

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

date

timedatectl查看系统时间概览

timedatectl

在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值