当我将宽大模式设置为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中更改年份。