Преобразование строки, соответствующей ISO 8601, в java.util.Date

Я пытаюсь преобразоватьISO 8601 отформатированная строка вjava.util.Date.

Я нашел образецyyyy-MM-dd'T'HH:mm:ssZ быть совместимым с ISO8601, если используется с локалью (сравните пример).

Однако, используяjava.text.SimpleDateFormatЯ не могу преобразовать правильно отформатированную строку2010-01-01T12:00:00+01:00, Я должен сначала преобразовать его в2010-01-01T12:00:00+0100без двоеточия.

Итак, текущее решение

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY);
String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
System.out.println(ISO8601DATEFORMAT.parse(date));

что явно не так приятно. Я что-то упустил или есть лучшее решение?

Ответ

Благодаря комментарию JuanZe я нашелJoda времени магия, это такжеописано здесь.

Итак, решение

DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));

Или, проще, используйте парсер по умолчанию через конструктор:

DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;

Для меня это приятно.

Ответы на вопрос(25)

Ваш ответ на вопрос