2014-09-16 2 views
2

Мне нужно было разобрать ниже Дата, поступающая с веб-службы.SimpleDateFormat со смещением не распознано

2014-09-16T18:05:00.000-05:00 

Так что я попытался созданного объект SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat 
            ("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 

JavaDocs имеет ниже примера и формата, приведенный в таблице, которая соответствует моему формату дата.

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"   2001-07-04T12:08:56.235-07:00 

Однако я становлюсь ниже исключения. Я использую jdk 1.7.0_55. Есть что-то, чего я не хватает?

Caused by: java.lang.IllegalArgumentException: Illegal pattern character 'X' 
    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:768) 
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:575) 
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:500) 
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:475) 
+1

Это прекрасно работает с JDK 1.7 и JDK 1.8, но Я получаю ваше исключение с JDK 1.6. – rgettman

ответ

6

Проверьте версию используемой Java. Держу пари, что вы на самом деле с помощью 6.

$ java -version 
java version "1.6.0_65" 

Формат XXX был добавлен в 7. Сравните:

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+1

В этом вопросе явно указывается _I использовать jdk 1.7.0_55._ Я думаю, что OP может ошибаться. Это похоже на вероятную проблему. – jpw

+0

Да, я думаю, что вопросник ошибается. Код работает отлично в 7. – nostromo

+1

java -version говорит 1.7. Компилятор Eclipse установлен в 1.6. Я буду использовать 1.6, поскольку сервер работает на 1.6. думать о выполнении подстроки, чтобы исключить смещение до преобразования на сегодняшний день – JavaDeveloper

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