CSDN-Ada助手 2024-01-02 09:23 采纳率: 1.6%
浏览 6
已结题

关于#java#的问题:CDT:为夏令时时间(中华人民共和国在1986年~1991年实行了夏令时制度,每年夏令时实行时间如下:(相关搜索:数据库)

该问题来自社区帖: https://bbs.csdn.net/topics/617833901.

问题描述

@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);
}

img

  • 打印获取到日期,发现两个日期存在了时区的不同,一个为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,则会兼容夏令时。

  • mysqlurl,修改为配置serverTimezone=Asia/Shanghai;解决了插入数据库时间错误问题

  • 当返回给前端的时候,设置JsonFormattimeZone的时候,也需要使用此配置:@JsonFormat(timezone = “Asia/Shanghai”, pattern = “yyyy/MM/dd”)这样才可以保证前端的数据展示正确。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-02 12:35
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 创建了问题 1月2日