java.text.ParseException:无法解析的日期:“1991-04-14 00:00:00”

时间:2017-12-21 08:23:53

标签: java simpledateformat

当我将宽松模式设置为false时,超出范围发生:“java.text.ParseException:Unparseable date:”1991-04-14 00:00:00“”。 代码如下:`

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    format.setLenient(false);
    System.out.println(format.parse("1991-04-14 00:00:00"));

当我将宽松模式设置为true时,结果显示:“Sun Apr 14 01:00:00 CDT 1991”。 根据权利,它应该是“Sun Apr 14 00:00:00 CDT 1991”。

以下日期也有这个问题。

  • 194006.03亿
  • 194103.16亿
  • 198605.04亿
  • 198704.12亿
  • 198804.1亿
  • 198904.16亿
  • 199004.15亿
  • 199104.14亿

2 个答案:

答案 0 :(得分:2)

问题中的大多数日期都发生在春天。它们可能会在您使用的时区过渡到每日节省时间。

format.parse("1991-04-14 00:00:00")

失败可能是由于您使用的时区已转换为1991-04-14 00:00:00上的每日节省时间,这意味着没有有效的1991-04-14 00:00:00日期,而是直接向前跳了一小时,直接到1991-04-14 01:00:00

我怀疑,这是中国1991年的时间变化:

  

1991年4月14日 - 夏令时开始

     

当地标准时间即将到达时   1991年4月14日星期日00:00:00时钟转发1小时到   1991年4月14日星期日,01:00:00当地白天时间。

Source

因此1991-04-14 00:00:00永远不是中国的有效时间。

您可以使用提供的链接搜索其他无效日期。只需更改网址中的年份即可。

答案 1 :(得分:0)

如果我执行你给定的代码,我没有问题,我得到以下结果:

Sun Apr 14 00:00:00 CEST 1991

所以问题可能与你的时区有关吗?