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”)
这样才可以保证前端的数据展示正确。