java - 使用 SimpleDateFormat 时无法解析日期
java - Unparseable date when using SimpleDateFormat
我正在尝试从 RSS 提要中读取数据,其中一个字段是提要的最后更新时间。
我正在使用与此类似的东西:
Date date;
String output;
SimpleDateFormat formatter;
String pattern = "EEE, dd MMM, HH:mm:ss Z";
formatter = new SimpleDateFormat(pattern, Locale.ENGLISH);
date = formatter.parse("Wed, 25 Mar 2020 08:00:00 +0200");
output = date.toString();
System.out.println(pattern + " | " + output);
但我收到此错误:
Exception in thread "main" java.text.ParseException: Unparseable date: "Wed, 25 Mar 2020 08:00:00 +0200"
at java.text.DateFormat.parse(DateFormat.java:366)
at HelloWorld.main(HelloWorld.java:16)
java.time
java.time 是现代 java 日期和时间 API 并且有一个内置的字符串格式化程序:
String lastUpdatedString = "Wed, 25 Mar 2020 08:00:00 +0200";
OffsetDateTime dateTime = OffsetDateTime
.parse(lastUpdatedString, DateTimeFormatter.RFC_1123_DATE_TIME);
System.out.println(dateTime);
输出:
2020-03-25T08:00+02:00
所以没必要自己写格式模式字符串,那总是容易出错,当然也没必要用SimpleDateFormat
class。 class 是出了名的 class 麻烦制造者,所以我们无论如何都想避免它。
Link: Oracle tutorial: Date Time 解释如何使用 java.time.
我正在尝试从 RSS 提要中读取数据,其中一个字段是提要的最后更新时间。 我正在使用与此类似的东西:
Date date;
String output;
SimpleDateFormat formatter;
String pattern = "EEE, dd MMM, HH:mm:ss Z";
formatter = new SimpleDateFormat(pattern, Locale.ENGLISH);
date = formatter.parse("Wed, 25 Mar 2020 08:00:00 +0200");
output = date.toString();
System.out.println(pattern + " | " + output);
但我收到此错误:
Exception in thread "main" java.text.ParseException: Unparseable date: "Wed, 25 Mar 2020 08:00:00 +0200"
at java.text.DateFormat.parse(DateFormat.java:366)
at HelloWorld.main(HelloWorld.java:16)
java.time
java.time 是现代 java 日期和时间 API 并且有一个内置的字符串格式化程序:
String lastUpdatedString = "Wed, 25 Mar 2020 08:00:00 +0200";
OffsetDateTime dateTime = OffsetDateTime
.parse(lastUpdatedString, DateTimeFormatter.RFC_1123_DATE_TIME);
System.out.println(dateTime);
输出:
2020-03-25T08:00+02:00
所以没必要自己写格式模式字符串,那总是容易出错,当然也没必要用SimpleDateFormat
class。 class 是出了名的 class 麻烦制造者,所以我们无论如何都想避免它。
Link: Oracle tutorial: Date Time 解释如何使用 java.time.