java.text.ParseException: не разбираемая дата только на некоторых устройствах
Я сталкиваюсь с очень странной проблемой. При разборе этой строки2016-09-06 05:18:06.023 PM
Я получаю следующее исключение -java.text.ParseException: Unparseable date: "2016-09-06 05:18:06.023 PM" (at offset 24)
Странная часть в том, что устройство, на котором произошло это исключение, является другомНексус 5, Однако, если я отлаживаю эту же строку на моемНексус 5 / несколько других эмуляторовработает нормально.
Вот код, который я использую.SimpleDateFormat
принадлежитjava.text
пакет.Date
принадлежитjava.util
пакет
SimpleDateFormat formatGMT = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss.SSS a");
formatGMT.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
date = formatGMT.parse("2016-09-06 05:18:06.023 PM");
} catch (ParseException e) {
Crashlytics.log(Log.ERROR, "DB Insertion error", e.getMessage().toString());
Crashlytics.logException(e);
e.printStackTrace();
}
Вот полная трассировка стека.
# Crashlytics - plaintext stacktrace Wed, 07 Sep 2016 03:37:44 GMT
# Platform: android
# Bundle Identifier: com.mypackage.app
# Issue #: 306
# Date: 2016-09-06T17:18:04Z
# OS Version: 6.0.1
# Device: Nexus 5
# RAM Free: 36.5%
# Disk Free: 11%
#0. Crashed: pool-3-thread-3: 0 0 0x0000000000000000
at java.text.DateFormat.parse(DateFormat.java:579)
at com.mypackage.app.MyServiceВозможно, на это могут повлиять символы. Для am / pm в локали устройства по умолчанию, поэтому попробуйте использовать локаль, как показано ниже, для разбора даты, это поможет вам.1.execute(MyService.java:1670)
at io.realm.Realm$1.run(Realm.java:1187)
at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
--
Non-fatal Exception: java.text.ParseException: Unparseable date: "2016-09-06 05:18:06.023 PM" (at offset 24)
at java.text.DateFormat.parse(DateFormat.java:579)
at com.mypackage.MyServiceВозможно, на это могут повлиять символы. Для am / pm в локали устройства по умолчанию, поэтому попробуйте использовать локаль, как показано ниже, для разбора даты, это поможет вам.1.execute(MyService.java:1670)
at io.realm.Realm$1.run(Realm.java:1187)
at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
#0. Crashed: pool-3-thread-3: 0 0 0x0000000000000000
at java.text.DateFormat.parse(DateFormat.java:579)
at com.mypackage.MyServiceВозможно, на это могут повлиять символы. Для am / pm в локали устройства по умолчанию, поэтому попробуйте использовать локаль, как показано ниже, для разбора даты, это поможет вам.1.execute(MyService.java:1670)
at io.realm.Realm$1.run(Realm.java:1187)
at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)