夏令时问题

发布时间 2023-03-28 21:30:56作者: 336土豆快跑

在项目开发过程中出现String类型如1867/06/06通过SimpleDateFormate转日期时是CDT时间而不是CST时间,
连接数据库的时区是Asia/Shanghai,存入数据库的时间是1867/06/06,但是后台查sql转成Date类型后还是CDT时间,传到前端就自动变成1867-06-05 23:00:00 少了一小时
解决:
①更改链接数据库的时区 Asia/Shanghai --> GMT+8

url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8

②在SimpleDateFormate中设置时区

 String day = "1867/06/06";
 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/mm/dd");
 simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GME"));
 Date date = simpleDateFormat.parse(day);

③存入数据库
④sql查询转成Date后变成1867-06-06 01:00:00
⑤传到前端,此时时间恢复1867-06-06 00:00:00