android - Android 5.0 上的 Jodatime 问题

标签 android jodatime android-5.0-lollipop

我的应用程序已经运行了一段时间,但在 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/

相关文章:

android - 动画窗口布局更改

java - 获取java不同结果中两个日期之间的日期列表

android - 即使使用 777,权限也被拒绝

android - appcompat v7 23,操作栏,透明度

Android L SoundPool.load() 回归

android - react-native-firebase 自定义声音不适用于 android 8、android 9

Java Picasa API 目录列表不起作用

java - 启动画面取决于点击继续

java - Joda-Time 找不到类 "forPattern()"

java - 从 Java 日历迁移到 Joda 日期时间