Я написал класс, который пытается преобразовать объекты в даты.
Для строковых представлений он пытается определить формат даты, ища совпадение шаблона формата предопределенной даты с этой строкой. Если шаблон совпадает, он использует этот шаблон в SimpleDateFormat
для синтаксического анализа этой строки на сегодняшний день.
Я знаю, что этот подход не является детерминированным, поскольку он потерпит неудачу, например, 8/6/1928, где будут совпадать несколько шаблонов, таких как d/M/yyyy и M/d/yyyy.
Ниже следует соответствующий раздел кода, который генерирует исключение ParseException:
// dateFormat is "d MMMM yyyy"
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
simpleDateFormat.setLenient(false);
// objectToConvert is "8 June 1982"
return simpleDateFormat.parse((String)objectToConvert);
Я не понимаю, почему я получаю следующее ParseException:
java.text.ParseException: Unparseable date: "8 June 1982"
С наилучшими пожеланиями, Йенс
Скорее всего, вы находитесь в другом Locale
, где в июне месяце пишется по- разному (для меня, в моей местности, это Juni
).
Попробуй это:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d MMM yyyy", Locale.ENGLISH);
Locale
Я изменил параметры моего анализатора дат, чтобы вызывающий мог дополнительно передать Locale
.