当我将宽大模式设置为false时,异常发生:“ java.text.ParseException:无法解析的日期:“ 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”。
按权利,应该是“ 1991年4月14日星期日00:00:00 CDT”。

下面的日期也有此问题。


19400603000000
19410316000000
19860504000000
19870412000000
19880410000000
19890416000000
19900415000000
19910414000000

最佳答案

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

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日,星期日,当地夏令时改为。


Source

因此,1991-04-14 00:00:00从来都不是中国的有效时间。

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

10-08 01:50