2011-12-19 3 views
1

У меня возникли аналогичные проблемы с Unable to parse DateTime-string with AM/PM markerНевозможно разобрать AM/PM с помощью SimpleDateFormat

Я даже попробовал решение, предложенное в этой связи, но это не помогло.

SimpleDateFormat timingFormat = new SimpleDateFormat("h:mm a", Locale.US); 
Date l = timingFormat.parse(time); 

, но я продолжаю получать java.text.ParseException: дата не поддается синтаксическому анализу: "12:34". Когда я вхожу 12:34 AM

+0

Вы пробовали синтаксический анализ после ['timingFormat.setLenient (true);') (http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setLenient%28boolean% 29)? – darvids0n

+1

Я столкнулся с тем же вопросом. Мы пробовали ряд вариантов и просто не могли заставить его разобрать текст AM или PM, поэтому оставьте его и просто используйте 24-часовые часы. «A» или «aa» следует использовать только для форматирования DateTime, а не для синтаксического анализа строки. –

ответ

2

Подождите секунду. Ошибка говорит, что 12:34 является непревзойденным, а не 12:34 AM. В этом случае ваш метод ввода читает первое слово до пробела и игнорирует часть «AM» вашей записи. Исправьте свой метод ввода, чтобы он считывал весь входной поток/строку, а затем он должен правильно разобрать.

1
public static void main(String[] args) throws ParseException { 
    SimpleDateFormat timingFormat = new SimpleDateFormat("h:mm a", Locale.US); 
    Date l = timingFormat.parse("12:34 AM"); 
    System.out.println(l.toString()); 
} 

Приведенный выше код работает нормально. Это означает, что вход, который вы передали методу parse, не соответствует ожидаемому.

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