Я пытаюсь преобразовать форматированную строку ISO 8601 в java.util.date . < /p>
Я обнаружил, что шаблон yyyy-mm-dd'hh: mm: ssz < /code> iso8601-compliant, если используется с локали (сравнить образец). < /p>
Однако с использованием java.text.simplateformatformat < />, я не могу содержать. 2010-01-01T12: 00: 00+01: 00 . Я должен преобразовать его первым в 2010-01-01t12: 00: 00+0100 , без толстой кишки. < /p>
Итак, текущее решение-< /p>
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));
< /code>
, что, очевидно, не так хорошо. Я что-то упускаю или есть лучшее решение? < /P>
Ответ < /strong> < /p>
Благодаря комментарии Хуанзе, я обнаружил магию Joda-time, это также описывается здесь. /> DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));
< /code>
или просто просто, используйте анализатор по умолчанию через конструктор: < /p>
DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;
< /code>
Для меня это приятно. < /p>
Подробнее здесь: https://stackoverflow.com/questions/220 ... -util-date