2015-05-06 3 views
6

Используя jdk1.7.0_55, я получаю parseposition.errorIndex как 0 в случае часового пояса, не является стандартным.SimpleDateFormat.parse возвращает 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:

Index Error 21

Результат Использование JDK 7

индекс 0

Ошибка Почему существует разница в этом?

Пожалуйста, помогите

+1

Я могу воспроизвести его. Очевидно, регрессия. Вы можете отправить это сообщение как ошибку в OpenJDK. –

+0

Не должно быть, но кажется, что jdk 6 дает вам дату и 7 дает вам pp. –

+1

Оба будут генерировать исключение, если я использую метод синтаксического анализа (даты). В jdk 6 он дает индекс ошибок как правильное положение, а индекс ошибки jdk 7 равен 0. @TaylorCourtney – Roshan

ответ

2

Действительно, это регресс. Все еще сломанной в последней версии Java 8. Открытый OpenJDK отладчик ошибок не перечисляет его, поэтому я сообщил об этом Oracle для проверки. Он отслеживается Oracle с идентификатором обзора: JI-9021556

К сожалению, у вас нет возможности исправить это.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – Marco13

+3

это ответ. Ответ: это регресс в JDK. –

+0

Этот комментарий автоматически вставляется во время просмотра. Я не собираюсь спорить о тонкой разнице между «выглядит как ...» и «есть ...», но, возможно, вы можете продлить ответ с достоверной информацией, например. ссылку на ваш отчет об ошибке. – Marco13

 Смежные вопросы

  • Нет связанных вопросов^_^