17
社区成员
发帖
与我相关
我的任务
分享@Test
public void test4() throws ParseException {
String str = "1989-05-29 00:00:00";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 不加时区有问题
// TimeZone.setDefault(TimeZone.getTimeZone("GMT+08"));
simpleDateFormat.parse(str);
}

打印获取到日期,发现两个日期存在了时区的不同,一个为CDT,一个为CST;
CDT:为夏令时时间(中华人民共和国在1986年~1991年实行了夏令时制度,每年夏令时实行时间如下:
1986年5月4日至9月14日(1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束,1987年4月12日至9月13日,1988年4月10日至9月11日,1989年4月16日至9月17日,1990年4月15日至9月16日,1991年4月14日至9月15日
CST:为美国、澳大利亚、古巴或中国的标准时间。
CST的时间和CDT的时间是相差了13个小时。
常用的CMT+8的时区设置,并不兼容夏令时。
使用TimeZone = Asia/Shanghai,则会兼容夏令时。
当mysql的url,修改为配置serverTimezone=Asia/Shanghai;解决了插入数据库时间错误问题
当返回给前端的时候,设置JsonFormat的timeZone的时候,也需要使用此配置:@JsonFormat(timezone = “Asia/Shanghai”, pattern = “yyyy/MM/dd”)这样才可以保证前端的数据展示正确。