2016-01-06 3 views
1

я есть строка со временем в следующем формате:JodaTime - как разобрать временную строку ISO 8601 в DateTime?

2016-01-07T08:00:00+00:00 

Когда я пытаюсь разобрать строку, используя следующий метод.

public static DateTime getDateTimeObject(String dateTime) { 
     //DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(PATTERN); 
     //DateTime dateTimeObj = dateTimeFormatter.parseDateTime(dateTime); 
     Logger.d(dateTime); 
     DateTime dateTimeObj = null; 
     try { 
      dateTimeObj = ISODateTimeFormat.dateTime().parseDateTime(dateTime); 
      return dateTimeObj; 
     } catch (Exception e) { 
      Logger.e(e.getMessage()); 
     } 
     return dateTimeObj; 
    } 

У меня всегда есть следующее исключение.

Invalid format: "2016-01-07T08:00:00+00:00" is malformed at "+00:00" 

Как я могу разобрать строку в формате ISO, чтобы получить действительный объект DateTime?

+0

Вы попробовали 'dateTimeObj = DateTime.parse (dateTime);'? – Youngjae

+0

FYI, проект Joda-Time находится в режиме обслуживания. Команда советует перейти на классы [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html), в этом случае ['OffsetDateTime'] (https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html). Пример: 'OffsetDateTime.parse (« 2016-01-07T08: 00: 00 + 00: 00 »)' –

ответ

5

Вашего значение не имеет компонента миллисекунды, так что вы хотите ISODateTimeFormat.dateTimeNoMillis():

Возвращает форматчик, который сочетает в себе полную дату и время без Millis, разделенный «T» (гггг-мм-дд «T'HH: мм: ssZZ).

dateTime() метод возвращает форматчик с форматом yyyy-MM-dd'T'HH:mm:ss.SSSZZ который ваша строка не соответствует.

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

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