2015-05-06 12 views
6

Mit jdk1.7.0_55 bekomme ich parseposition.errorIndex als 0, wenn Zeitzone nicht Standard ist.SimpleDateFormat.parse gibt errorIndex als 0 zurück

Aber mit jdk1.6.0_38 ich bin für die gleiche falsche Zeitzone Format

Below parseposition.errorIndex als 21 bekommen die Probe:

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()); 

Ergebnis JDK 6:

Fehler Index 21

Ergebnis JDK 7

Fehler Index 0

Warum gibt es Unterschiede darin?

Bitte helfen

+1

Ich kann es reproduzieren. Offensichtlich eine Regression. Sie könnten diese Nachricht als Fehler an OpenJDK senden. –

+0

Es sollte nicht sein, aber es scheint wie jdk 6 gibt Ihnen Datum und 7 gibt Ihnen pp. –

+1

Beide werden Ausnahme auslösen, wenn ich Parse (Datum) -Methode verwenden. In jdk 6 gibt es Fehlerindex als korrekte Position und in jdk 7 Fehlerindex als 0. @ TaylorCourtney – Roshan

Antwort

2

In der Tat ist dies eine Regression. Immer noch in den letzten Java 8 Build eingebaut. Der öffentliche OpenJDK Bug Tracker listet ihn nicht auf, daher habe ich ihn zur Überprüfung an Oracle gemeldet. Es wird von Oracle mit Review-ID verfolgt: JI-9021556

Leider gibt es keine Möglichkeit für Sie, das zu beheben.

+0

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – Marco13

+3

ist es eine Antwort. Die Antwort ist: Es ist eine Regression im JDK. –

+0

Dieser Kommentar wird während der Überprüfung automatisch eingefügt. Ich werde nicht über den feinen Unterschied zwischen "sieht wie ein ..." und "ist ein ..." streiten, aber vielleicht könntest du die Antwort mit glaubwürdiger Information erweitern, z. ein Link zu Ihrem Fehlerbericht. – Marco13