我正在尝试解析日期“10/13/2014 08:06 AM” 这是我的代码:
public static LocalDateTime parseDateTime(String dateAndTime) {
try {
if (dateAndTime.contains("-")) {
return LocalDateTime.parse(dateAndTime.toUpperCase(), DateTimeFormat.forPattern("yyyy-MM-dd hh:mm aa"));
//return DateTimeFormat.forPattern("yyyy-MM-dd hh:mm aa").parseDateTime(dateAndTime.toUpperCase());
} else {
return LocalDateTime.parse(dateAndTime.toUpperCase(), DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa"));
//return DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa").parseDateTime(dateAndTime.toUpperCase());
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
return null;
}
}
我的解析器失败:
java.lang.IllegalArgumentException: Invalid format: "10/13/2014 08:06 AM" is malformed at "AM"
请帮忙调查。
我使用的是 Android 4.4.4 和 JodaTime 2.3
最佳答案
我不知道您的区域设置是什么,但我可以使用 new Locale("hi", "IN")
之类的区域设置重现您的问题(我自己的系统区域设置不同)。因此,您的问题的解决方案是将区域设置指定为英语,因为像“AM”这样的文本是特定于区域设置的并且主要用于英语。
LocalDateTime ldt =
LocalDateTime.parse(
dateAndTime.toUpperCase(),
DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa").withLocale(Locale.ENGLISH));
关于android - Android 上的 JodaTime 日期和时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348567/