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

猜你喜欢

转载自blog.csdn.net/dmw412724/article/details/80284740