Java项目部署服务器后产生了服务器当前时间与本地当前时间不一致问题

这个问题很有可能是多中原因产生,今天主要我主要是解决常见的,遇到最多的问题。

前景:我遇到的问题是我部署在服务器上的springboot项目,在生成Tokin过期时间时跟当前时间不一致导致过期时间不准确。
有相同问题的小伙伴,直接抄作业!

问题:直接打成jar的springboot项目在服务器中直接运行,获取当前时间戳是会比当前时间满12个小时
那我们直接上干货!!!
在这里插入图片描述

解决方法:

  1. 查看数据库时区与数据库连接配置
    使用sql查询服务器数据库时间select new();发现时间没有如何问题。
    然后查看数据库连接属性 ?useUnicode=true&characterEncoding=UTF-8**&serverTimezone=UTC**有时区设置
  2. 查看服务器系统时间
    使用date命令查看,没有问题;
    使用date -R查看当前时区,还是没有问题;
  3. 查看服务器硬件时间
    使用 sudo hwclock --show命令查看,也没有问题;
    在这里插入图片描述

查看项目日志, 发现项目日志时间也是错的, 比当前时间慢了12小时

通过网上查阅资料, 定位到是JVM问题
首先找到的方法就是在启动jar包的命令中添加时区参数
java -jar -Duser.timezone=GMT+08 xxx.jar
但是这是一个临时解决, 每次启动都需要添加时区参数, 会很麻烦, 所以我就找了下面这种一次性解决的方法。
有一点需要注意: 实际执行的时候, 这几个命令是需要使用管理员权限来执行的, 在前面添加 sudo 就可以

  1. 编辑时间配置文件
    使用sudo vim /etc/sysconfig/clock命令进行编辑
    增加以下内容:
ZONE=“Asia/Shanghai”
UTC=false #设置为false,硬件时钟不于utc时间一致
ARC=false
  1. linux的时区设置为上海时区
    使用sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime命令
  2. 对准时间
    使用sudo ntpdate cn.pool.ntp.org命令
  3. 设置硬件时间和系统时间一致并校准
    使用sudo /sbin/hwclock --systohc命令

最后我们再去重新启动我们的项目就打工完成了!是不是特变简单,所以说遇到问题不可怕,可怕的是不去解决问题。

在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值