SimpleDateFormat 导致无法解析的错误
SimpleDateFormat causing unparseable error
我有点使用以下来源创建我自己的 sdf 模式:
https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/SimpleDateFormat.html
不幸的是
SimpleDateFormat mFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
...
private Date getLatestTimeStamp() throws ParseException {
return mFormatter.parse("Mon, 19 Dec 2019 11:32:04 +0000");
}
导致以下错误,我不明白为什么:
java.text.ParseException: Unparseable date: "Mon, 19 Dec 2019 11:32:04 +0000"
任何帮助都会很棒!
编辑:我正在使用 JDK 13
编辑 2:
因此,我清理了我的代码,创建了一个新项目,但它仍然无法运行:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z");
System.out.println(OffsetDateTime.parse(source, mFormatter));
}
}
下面是完整的错误信息:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Thu, 19 Dec 2019 11:32:04 +0000' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951)
at java.base/java.time.OffsetDateTime.parse(OffsetDateTime.java:402)
at main.java.de.taka.main.Main.main(Main.java:15)
进程已完成,退出代码为 1
您应该使用 RFC_1123_DATE_TIME 格式化程序。
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.RFC_1123_DATE_TIME;
System.out.println(OffsetDateTime.parse(source, mFormatter));
}
顺便说一下,你的模式很好,你应该添加 .withLocale()
。
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z").withLocale(Locale.US);
我有点使用以下来源创建我自己的 sdf 模式: https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/SimpleDateFormat.html
不幸的是
SimpleDateFormat mFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
...
private Date getLatestTimeStamp() throws ParseException {
return mFormatter.parse("Mon, 19 Dec 2019 11:32:04 +0000");
}
导致以下错误,我不明白为什么:
java.text.ParseException: Unparseable date: "Mon, 19 Dec 2019 11:32:04 +0000"
任何帮助都会很棒!
编辑:我正在使用 JDK 13
编辑 2:
因此,我清理了我的代码,创建了一个新项目,但它仍然无法运行:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z");
System.out.println(OffsetDateTime.parse(source, mFormatter));
}
}
下面是完整的错误信息:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Thu, 19 Dec 2019 11:32:04 +0000' could not be parsed at index 0 at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049) at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951) at java.base/java.time.OffsetDateTime.parse(OffsetDateTime.java:402) at main.java.de.taka.main.Main.main(Main.java:15)
进程已完成,退出代码为 1
您应该使用 RFC_1123_DATE_TIME 格式化程序。
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.RFC_1123_DATE_TIME;
System.out.println(OffsetDateTime.parse(source, mFormatter));
}
顺便说一下,你的模式很好,你应该添加 .withLocale()
。
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z").withLocale(Locale.US);