Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SimpleDataFormat导致不可解析的错误_Java_Simpledateformat_Java 13_Unparseable - Fatal编程技术网

Java SimpleDataFormat导致不可解析的错误

Java SimpleDataFormat导致不可解析的错误,java,simpledateformat,java-13,unparseable,Java,Simpledateformat,Java 13,Unparseable,我使用以下源代码创建了自己的sdf模式: 不幸的是 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"

我使用以下源代码创建了自己的sdf模式:

不幸的是

    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"
任何帮助都会很棒

编辑:我正在使用JDK13

编辑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));
    }
}
出现以下错误消息:

线程“main”java.time.format.DateTimeParseException中的异常:无法在索引0处分析文本“Thu,2019年12月19日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

您应该使用格式化程序

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);

尝试SimpleDataFormat(“yyyy-MMM-dd-HH:mm:ss”);dateFormatGmt.setTimeZone(TimeZone.getTimeZone(“GMT”));不太确定问题的原因,但您的代码似乎在repl上运行。它也可以查看,可能不是问题的原因,但星期一不会是12月19日参见此处
2019-dec-19
is
周四
但不是星期一,也不要使用
SimpleDataFormat
您可以使用java
OffsetDateTime.parse中最新的datetime api(“Thu,2019年12月19日11:32:04+0000”,格式化程序)
我建议您不要使用
SimpleDataFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。所以扔掉你的第一个片段,努力让第二个片段发挥作用。相关:(但一定要选择下面的好答案)。非常好的答案。非常好的工作代码,并正确解释了问题中的错误。