我的应用程序已经运行了一段时间,但在 Android 5.0 发布后,它在运行此版本的设备上崩溃。 我正在使用 JodaTime 2.6 进行日期处理,正是这个库突然引发了以下异常:
java.lang.IllegalArgumentException:格式无效:“6:06:00 AM”在“AM”处格式错误
我已经验证我尝试解析的相应字符串具有正确的格式。
更新(这是失败的代码)
private void doSomething(DateTime time, String timeToParse,int day, int month) {
DateTimeFormatter fmt = DateTimeFormat.forPattern("h:mm:ss a");
//Fails here:
LocalTime timeFromString = LocalTime.parse(timeToParse,fmt);
}
有人遇到类似问题吗?
最佳答案
这可能是一个本地化问题。看来您的默认本地不知道“AM”字符串,而是其他东西。
Joda-Time 只是委托(delegate)给底层 JVM 资源,在您的情况下委托(delegate)给 Android 资源,这可能会有所不同。为此,Joda-Time 最终使用类 DateFormatSymbols
。请检查您的区域设置和 getAmPmStrings() 的输出以便做出正确的诊断。
取决于诊断结果,或者使用 LocalTime.parse(timeToParse, fmt.withLocale(Locale locale));
显式设置区域设置有帮助,或者您使用合适形式的字符串输入预处理。
关于android - Android 5.0 上的 Jodatime 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286732/