ubuntu部署java项目时间相差8小时 已解决

java new date()时间与ubuntu系统服务器时间相差8小时

项目是需要放置在ubantu系统上,当我首次在ubuntu部署了服务器,发现new Date()打印出来的时间与时区为北京的时间相差了8个小时,而后我马上进入ubuntu系统查看并且修改了系统的时区,设置为了Asia/Shanghai 上海时区,但是在ubuntu打印系统时间时仍然存在相差8小时的时间
图为ubuntu打印时间
设置完成后,重启了java服务器new date()仍然相差8小时…

后续在网上看了一些帖子,就在项目启动时设置了时区,代码如下

/**
 * 项目ioc注入完成后运行
 * @author ly
 */
@Component
@Order(value = 1)
@Slf4j
public class InitMQStartThread implements ApplicationRunner {

    @PostConstruct
    void started() {
        log.info("修改时区前时间:{}", new Date());     //Tue 2022-05-24 02:54:58 UTC
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai "));
        log.info("修改时区后时间:{}", new Date());     //Tue 2022-05-24 10:54:58 CST
    }
}

这时打印出来的时间很令人满意,但没想到后续会出现更严重的问题

当我使用代码获取数据库数据(数据库mysql 创建时间字段设置datetime)时,发现创建时间莫名其妙的加了8个小时,而且是每获取一次数据这个创建时间都会自动加8小时,这时我意识到是因为设置了以上代码块设置了时区的问题,系统在获取数据库时间时默认认为是世界时间(世界时间比shanghai时区少8小时)所以系统根据以上代码块直接加了8小时修改为了shanghai时区的时间,之后我便删除了此段代码。
后续终于ubuntu系统内进行修改后,java new date()时间才与ubantu系统时间想匹配
在ubantu运行命令

***@***:~/*****/****/***/****$ echo 'Asia/Shanghai' >/etc/timezone

之后再重启java项目即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值