关于serverTimezone的设置GMT与UTC---保存数据到mysql相差8小时问题JDBC驱动的版本
//这是我的日期格式
Date date=new Date(System.currentTimeMillis()); //获取当前时间并实例化
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //定义时间格式并初始化
System.out.println(sdf.format(date));
今天保存时间数据到数据库,一直发现有问题,和现实中的时间总是相差8个小时,我最开始的url中的serverTimezone=UTC,数据库中的time格式为datetime。后面在网上搜集了一些资料,解决办法如下:
UTC和GMT:
UTC代表的是全球标准时间,是以原子时计时,更加精准,适应现代社会的精确计时。
GMT格林威治标准时间,是指位于伦敦郊区的皇家格林尼治天文台的标准时间。
serverTimezone=GMT
这个他表示12小时制,如果serverTimezone=GMT%2B8
表示24小时制,默认不写serverTimezone的话是24小时制,高版本的mysql需要指定时间格式。
但是我们使用的时间是北京时区也就是东八区,领先UTC和GMT八个小时。
一般视为无差别,即:北京时间=UTC+8=GMT+8。
JDBC驱动的版本号:
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以上的版本中的(我就是这个)
使用com.mysql.cj.jdbc.Driver驱动不配置时区会报错的。
解决相差8小时问题关于jdbc时区的配置:
serverTimezone=Asia/Shanghai
或
serverTimezone=GMT%2B8
写在最后:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!
谢谢浏览!