JAVA时区

碰到个比较恶心的事情.

数据库有个字段是datetime的类型的,映射到java类里是java.util.Date类

然而在insert的时候,会报错,要求设置下时区,于是设置了.

jdbc.url=jdbc:mysql://localhost:3306/community4?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=UTC

但是存进去后发现时间比当前时间要小8个小时.

这个肯定是因为时区的问题.那么到底是哪里出现的问题呢?是JAVA虚拟机的时区不对还是数据库的时区不对呢?

先测试虚拟机的时间:

打印

log.info("start:"+System.getProperty("user.timezone"));
结果是:
Asia/Shanghai

没问题,是中国的时区.当然如果这里显示的不是上海而是其他的时区,就应该去这样做

System.setProperty("user.timezone","Asia/Shanghai"); 

那么就是数据库的问题,去查看了数据库

show now()
SHOW VARIABLES LIKE "%time_zone%";
这里却是个空的.怪不得需要我连接的时候传入这个timezone.而根本原因就在于我传入的是美国时间标志,改成

改成CTT也就是中国的时区

jdbc.url=jdbc:mysql://localhost:3306/community4?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=CTT
OK
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值