如何解决有时会发生Android Parse Exception
嗨,我有一个奇怪的问题。我正在从网上按预期方式获取一些xml数据。 当我调用在片段中获取数据的方法时,一切都很好,但是如果我在另一个片段中为相同的url调用完全相同的方法,则会抛出此奇怪的解析异常,在此尝试将传入的日期字符串转换为较长的时间戳(以毫秒为单位)。 如果错误在不起作用的片段中发生一次,则它也会在先前起作用的片段中停止工作。 它会引发此异常:
java.text.ParseException: Unparseable date: "Sun,30 Aug 2020 00:32:42 +0000"
我用于简单日期格式的模式是
"EEE,dd MMM yyyy HH:mm:ss Z"
有人可以告诉我为什么会这样吗,因为我使用的模式似乎可以工作,为什么我会得到这个异常?
解决方法
我建议您从过时且容易出错的java.util
日期时间API和SimpleDateFormat
切换到modern java.time
日期时间API和相应的格式化API (软件包java.time.format
)。从 Trail: Date Time 了解有关现代日期时间API的更多信息。
如果您的Android API级别仍不兼容Java8,请选中How to use ThreeTenABP in Android Project和Java 8+ APIs available through desugaring。
使用Java现代日期时间API进行以下操作:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Given date-time string
String dateTimeString = "Sun,30 Aug 2020 00:32:42 +0000";
// Parse the given date-time string into OffsetDateTime as it has a Zone Offset
// of +0000 hours
OffsetDateTime odt = OffsetDateTime.parse(dateTimeString,DateTimeFormatter.RFC_1123_DATE_TIME);
// Display OffsetDateTime in the default format
System.out.println(odt);
// Display OffsetDateTime in some custom formats
System.out.println(odt.format(DateTimeFormatter.RFC_1123_DATE_TIME));
System.out.println(odt.format(DateTimeFormatter.ofPattern("u-MM-dd HH:mm:ss X")));
}
}
输出:
2020-08-30T00:32:42Z
Sun,30 Aug 2020 00:32:42 GMT
2020-08-30 00:32:42 Z
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。