2015-11-05 4 views
1

этот код бросает "неверный формат" или "искаженной" Exception:JodaTime IllegalArgumentException: Неверный формат

Код:

strDate = "21/10/2015 12:00:00 AM"; 
format = "dd/MM/yyyy hh:mm:ss a"; 

DateTime.parse(strDate, DateTimeFormat.forPattern(format)).toDate(); 

Исключение:

java.lang.IllegalArgumentException: Invalid format: "21/10/2015 12:00:00 AM" 
is malformed at "AM" 

Что случилось?

Я Ussing Joda время: 2.8.1

(я уже искал, и я думаю, что это правильный шаблон для этого strDate)

ответ

4

Текст AM/PM маркеров может отличаться, что вашего языкового стандарта по умолчанию. Вы могли бы сделать

Date date = 
    DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).toDate(); 
+0

ОК плохо попробуйте этот код, и я прокомментирую. –

+0

ОК, этот код работал, спасибо, дополнительно я обновил версию JodaTime до 2.9 –

3

Зависит от местности, вы можете указать локаль и часовой пояс:

они должны работать для вас:

DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).withZone(DateTimeZone.UTC).toDate(); 

или

DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).toDate(); 
+0

Да, вы правы, спасибо. –

+0

Добро пожаловать. – jfun

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