2013-11-08 2 views
0

Что было бы лучшим способом конвертировать строку? 06 Nov 2013 17:43:07 "to joda DateTime/Date? Я получаю ниже ошибки для моего кодаПреобразование строки в Date - Получение ошибки

Код:

DateTime publishTime = new DateTime((String)dataMap.getValue("publishDate")); 

Ошибка:

java.lang.IllegalArgumentException: Invalid format: "06 Nov 2013 17:43:07" is malformed  
at " Nov 2013 17:43:07" 
     at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:747) 

Есть ли список пользовательских форматов даты, мы можем перейти к SimpleDateFormat конструктор? Не удается найти консолидированный список/ссылку.

Благодаря

+0

Цель 'SimpleDateFormat' это позволит вам создавать свои собственные форматы, так что нет, не включенный список распространенных, если вы не строить их самостоятельно. –

ответ

1

Вы должны использовать SimpleDateFormat класс.

Кроме того, что Dateformats хорошо описаны здесь http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+0

Спасибо .. Я использовал пользовательскую информацию о дате, которую вы предоставили, и использовал ниже код и не получал никаких ошибок. Не уверен, что этот подход лучше, чем SimpleDateFormat, но я также читаю, что SDF не является потокобезопасным. Что ты предлагаешь? – NewQueries

+0

DateTimeFormatter fmt = DateTimeFormat.forPattern ("dd MMM yyyy HH: mm: ss"); DateTime publishTime = DateTime.parse ((String) dataMap.getValue ("publishDate"), fmt); Дата публикацииДата = publishTime.toDate(); – NewQueries

1

JodaTime-х DateTimeFormat бросает исключение, если поле месяца не совпадает по умолчанию Locale. Попробуйте использовать ENGLISH Locale

DateTimeFormatter fmt = 
    DateTimeFormat.forPattern("dd MMM yyyy HH:mm:ss").withLocale(Locale.ENGLISH); 
DateTime publishTime = DateTime.parse("06 Nov 2013 17:43:07", fmt); 
Date publishDate = publishTime.toDate(); 
Смежные вопросы