aiqqq000
随手一码
采纳率0%
2016-03-10 05:54 浏览 4.1k

java中格式化“1990-04-15 00:00:00”这个字符串为Date时出现问题

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String str = "1990-04-15 00:00:00";
 System.out.println(sdf.format(sdf.parse(str)));

运行结果为:1990-04-15 01:00:00

这里为什么格式化后的日期多了一个小时?

补充啊,这里的时间改成任意的其他时间就正常

新人没有币,还请指导的解惑啊

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答 默认 最新

  • a8761087 GrowingDarker 2016-03-10 06:14

    因为24时 日期格式是没有00点的。00点就认为是1点。晚上12点是24点。

    点赞 1 评论 复制链接分享
  • liuyouli2012 liuyouli2012 2016-03-10 06:07

    我也想知道!! 神奇

    点赞 评论 复制链接分享
  • bdmh bdmh 2016-03-10 06:12

    你看看本地时区是哪,设置成北京时区

    点赞 评论 复制链接分享
  • PYouLing123456789 历精图治 2016-03-10 06:24

    我运行了了
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String str = "1990-04-15 01:00:00";
    System.out.println(sdf.format(sdf.parse(str)));
    发现结果 1990-04-15 01:00:00

    运行下面的之后
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = "1998-04-15 00:00:00";
    System.out.println(sdf.format(sdf.parse(str)));
    结果是这个:
    1998-04-15 00:00:00
    我也觉得很纳闷。我觉得有可能与时区有关系

    点赞 评论 复制链接分享
  • baidu_33430214 飞雪安能住酒中 2016-03-10 07:36

    神奇!我猜跟系统中英文语言可能有关,转换到特定点时会发生特殊变化。

    点赞 评论 复制链接分享
  • u012401711 JAVA_DIRECTION 2016-03-10 09:29

    改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

    点赞 评论 复制链接分享
  • qq_29610345 eryangzi2 2016-11-02 06:25

    改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

    点赞 评论 复制链接分享
  • qq_29610345 eryangzi2 2016-11-02 06:25

    改成其他时间都行,唯独这个时间不行,我也很郁闷,等待大神解答

    点赞 评论 复制链接分享
  • otherhy 白掌_Hyman 2019-06-21 11:14

    网上搜索有人说是因为美国冬令时夏令时切换,会将时间调一个小时,会有一些日期的00:00:00不存在,直接从1点开始的,我这边遇到的日期就有,1989-04-16,1987-04-12,想问下有没有大佬有解决方案,服务器还不好切换时区

    点赞 评论 复制链接分享

相关推荐