Android 5.0 上的 Jodatime 问题
Jodatime issues on Android 5.0
我的应用程序已经运行了一段时间,但在 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 仅委托给底层 JVM 资源,在您的情况下委托给 Android-资源,这可能会有所不同。为此,Joda-Time 最后使用了 class DateFormatSymbols
。请检查您的语言环境和 getAmPmStrings() 的输出以获得正确的诊断。
根据诊断结果,使用 LocalTime.parse(timeToParse, fmt.withLocale(Locale locale));
帮助显式设置语言环境,或者使用合适形式的字符串输入预处理。
我的应用程序已经运行了一段时间,但在 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 仅委托给底层 JVM 资源,在您的情况下委托给 Android-资源,这可能会有所不同。为此,Joda-Time 最后使用了 class DateFormatSymbols
。请检查您的语言环境和 getAmPmStrings() 的输出以获得正确的诊断。
根据诊断结果,使用 LocalTime.parse(timeToParse, fmt.withLocale(Locale locale));
帮助显式设置语言环境,或者使用合适形式的字符串输入预处理。