Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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 SimpleDataFormat.parse将errorIndex返回为0_Java_Java 7_Simpledateformat_Jdk1.6 - Fatal编程技术网

Java SimpleDataFormat.parse将errorIndex返回为0

Java SimpleDataFormat.parse将errorIndex返回为0,java,java-7,simpledateformat,jdk1.6,Java,Java 7,Simpledateformat,Jdk1.6,使用jdk1.7.0_55,在时区不是标准时区的情况下,我将parseposition.errorIndex设置为0 但是使用jdk1.6.0_38,我得到的parseposition.errorIndex为21,用于相同的错误时区格式 以下是示例: String date = "13 Jan 2005 21:45:34 ABC"; String format = "dd MMM yyyy HH:mm:ss z"; ParsePosition pp = new ParsePosition(0);

使用jdk1.7.0_55,在时区不是标准时区的情况下,我将parseposition.errorIndex设置为0

但是使用jdk1.6.0_38,我得到的parseposition.errorIndex为21,用于相同的错误时区格式

以下是示例:

String date = "13 Jan 2005 21:45:34 ABC";
String format = "dd MMM yyyy HH:mm:ss z";
ParsePosition pp = new ParsePosition(0);
pp.setIndex(0);
SimpleDateFormat sd = new SimpleDateFormat(format,Locale.ENGLISH);
Date d = sd.parse(date,pp);
System.out.println("Error Index "+pp.getErrorIndex());
使用jdk 6的结果:

误差指数21

使用jdk7的结果

错误索引0

为什么会有区别呢


请帮助

事实上,这是一种倒退。在最新的Java8版本中仍然处于崩溃状态。公共OpenJDK bug跟踪器并没有列出它,所以我已经将它报告给了Oracle以供审查。它由Oracle跟踪,审查ID为JI-9021556


不幸的是,您无法修复此问题。

我可以复制它。显然是一种倒退。您可以将此消息作为bug发送给OpenJDK。不应该这样,但看起来jdk 6给了您日期,7给了您pp。如果我使用parse(date)方法,两者都会引发异常。在jdk 6中,错误索引为正确位置,在jdk 7中,错误索引为0@泰勒库尔特尼这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。这是一个答案。答案是:这是JDK中的一个回归。此注释在审阅期间自动插入。我不想争论“看起来像一个…”和“是一个…”之间的细微差别,但也许你可以用可信的信息来扩展答案,例如链接到你的bug报告。谢谢你的挑剔,我更改了答案的措辞。此外,我会在收到oracle的bug ID后立即更新答案。然而,他们的bugtracker只有一部分是公开的,但这意味着没有解决方案,这是一个答案。