Изменение поведения SimpleDateFormat в Android Marshmallow

Я столкнулся с проблемой форматирования даты на Android 6.0, Marshmallow. Код, генерирующий исключение, отмеченное ниже, - это библиотека на чистом Java (построена отдельно), которую мое приложение использует для запросов API («клиент»). Библиотека построена на Java 1.6, если это связано ... в любом случае, вот код;

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd E hh:mm aa", Locale.UK);
Date eventDate = dateFormat.parse(StringUtils.substring(record, 0, 23).trim());

...record имеет значение;

2015-10-23 Fri 10:59 PM BST   3.60 meters

... который после "обрезки" есть;

2015-10-23 Fri 10:59 PM
yyyy-MM-dd E hh:mm aa

Этот код работал со старых добрых дней Froyo и является модульным тестированием. Все это в стороне Зефир бросает исключение;

10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: SynchroniseTidePosition.doInBackground
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: java.text.ParseException: Unparseable date: "2015-10-23 Fri 10:59 PM" (at offset 21)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at java.text.DateFormat.parse(DateFormat.java:579)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at com.oceanlife.rover.handler.XTideParser.parseResponse(XTideParser.java:69)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at com.brantapps.oceanlife.task.SynchroniseTidePosition.doInBackground(SynchroniseTidePosition.java:107)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at com.brantapps.oceanlife.task.SynchroniseTidePosition.doInBackground(SynchroniseTidePosition.java:43)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException:     at java.lang.Thread.run(Thread.java:818)

Смещение «21» - это пробел после «9» в 10:59. Кто-нибудь может объяснить эту неудачу?

Обновить

Переключился на joda-time, и он выдал более информативное сообщение об ошибке. Вот;

Invalid format ... is malformed at "PM"

... так, это о AM / PM аспекте строки, пытающейся быть проанализированной - назад кдокументы

Ответы на вопрос(1)

Ваш ответ на вопрос