SimpleDateFormat: разбор исключений на устройствах Android 6 - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь получить строку для даты.Вот пример строки:

val date = "10/10/2016 12:00:00 AM" //format month/day/year

Теперь я хотел бы преобразовать эту строку в дату.Для этого я пытаюсь запустить следующее:

val formatter = SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa")
var date = formatter.parse(date)

Всякий раз, когда этот код работает на устройствах под управлением Android 8, все работает отлично.Однако, если я пытаюсь запустить на старых устройствах (например, телефоны с Android 6), я получаю ParseException:

Unparseable date: "10/10/2016 12:00:00 AM" (at offset 20)

Я заметил, что удаление символов AM / PM (aa)из строки решает синтаксический анализ исключения.Может кто-нибудь сказать мне, что здесь происходит?

спасибо

С уважением, Луис

PS: код работает без проблем в эмуляторе, но не на реальных устройствах

1 Ответ

0 голосов
/ 01 июня 2018

Попробуйте:

val date = "10/10/2016 12:00:00 AM"
val formatter = SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", Locale.US)
var date = formatter.parse(date)

Получено отсюда: https://developer.android.com/reference/java/text/SimpleDateFormat?hl=pt-br

Похоже, они никогда не используют "aa" для "PM/AM" значения, а скорее "a" или "aaa".

Также из этого ответа: Невозможно проанализировать строку DateTime с маркером AM / PM Они рекомендуют изменить значение по умолчанию Locale На Locale.US, если у вас есть другие символы для PM / AM

...