java.text.ParseException:不可解析的日期:";1991-04-14 00:00:00;
当我将lenient模式设置为false时,会出现异常:“java.text.ParseException:Unparseable date:“1991-04-14 00:00:00”。 代码如下:`java.text.ParseException:不可解析的日期:";1991-04-14 00:00:00;,java,simpledateformat,Java,Simpledateformat,当我将lenient模式设置为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
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
- 198605040000000
- 19870412000000
- 19880410000000
- 19890416000000
- 19900415000000
- 19910414000000
Sun Apr 14 00:00:00 CEST 1991
所以问题可能是关于你的时区的?问题中的大多数日期都发生在春天。它们可能发生在您正在使用的时区中的每日节省时间的过渡阶段
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 () 因此,
1991-04-14 00:00:00
在中国从来都不是有效时间
您可以使用提供的链接搜索其他无效日期。只需在URL中更改年份。我得到了时区:sun.util.calendar.ZoneInfo[id=“亚洲/上海”,偏移量=2880000,DSTSAVIENT=0,useDaylight=false,transitions=19,lastRule=null]您可以尝试添加以下行吗:format.setTimeZone(timezone.getTimeZone(“GMT+2”);请把它作为一个评论,当它意味着你将不得不删除图片的时候。这对我不起作用!它打印的是:Sun Apr 14 07:00:00 CDT 1991我真的不明白这是不是一个好主意,但你可以试试这个:format.setTimeZone(TimeZone.getTimeZone(“GMT-5”);我得到了时区:sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=2880000,dststavings=0,useDaylight=false,transitions=19,lastRule=null],我会考虑夏令时;夏天的开始。这可以解释1小时的差异;跳转一小时的一秒钟。相关:。顺便说一句,为什么要使用早已过时且臭名昭著的
SimpleDateFormat
类,与它一起工作是如此的好(幸运的是,它不会引入你所在时区不存在的时间)。。尝试在“时区更改”框中选择1925-1949、1980-1989和1990-1999。