Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.text.ParseException:不可解析的日期:";1991-04-14 00:00:00;_Java_Simpledateformat - Fatal编程技术网

java.text.ParseException:不可解析的日期:";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

当我将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-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。