SimpleDateFormat.parse将errorIndex返回为0

Ros*_*han 6 java jdk1.6 simpledateformat java-7

使用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());
Run Code Online (Sandbox Code Playgroud)

结果使用jdk 6:

错误索引21

结果使用jdk 7

错误索引0

为什么会有区别?

请帮忙

Fab*_*nge 3

这确实是一种回归。在最新的 Java 8 版本中仍然存在问题。公共 OpenJDK bug 跟踪器没有列出它,因此我已将其报告给 Oracle 进行审查。它由 Oracle 跟踪,审阅 ID:JI-9021556

不幸的是,你没有办法解决这个问题。

  • 这是一个答案。答案是:它是JDK中的回归。 (3认同)