SimpleDateFormat导致不可解析的错误

问题描述 投票:1回答:1

我还使用以下资源创建了自己的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));
    }
}

以下错误信息之后:

[线程“主”中的异常java.time.format.DateTimeParseException:无法在索引0处解析文本'Thu,19 Dec 2019 11:32:04 +0000'在java.base / java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049)在java.base / java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951)在java.base / java.time.OffsetDateTime.parse(OffsetDateTime.java:402)在main.java.de.taka.main.Main.main(Main.java:15)

以退出代码1完成的过程

java simpledateformat java-13 unparseable
1个回答
0
投票

您应该使用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);
© www.soinside.com 2019 - 2024. All rights reserved.