SimpleDateFormat 为 +0100 抛出解析异常

Pra*_*gan 2 java date-parsing simpledateformat

我正在尝试使用日期格式的两组日期:

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

它适用于以下日期:2016 年 8 月 26 日星期五 13:55:34 +0000

不适用于日期:2016 年 9 月 6 日,星期二 11:57:14 +0100

引发 +0100 日期的异常。

 Unparseable date: "Tue, 06 Sep 2016 11:57:14 +0100" (at offset 0)
 at java.text.DateFormat.parse(DateFormat.java:555)
Run Code Online (Sandbox Code Playgroud)

YMo*_*omb 5

它失败了offset 0,这意味着问题与时区无关,而是与字母中日期有关

你应该设置Locale你的SimpleDateFormat.

    DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
    Date d1 = format.parse("Fri, 26 Aug 2016 13:55:34 +0000");
    Date d2 = format.parse("Tue, 06 Sep 2016 11:57:14 +0100");
Run Code Online (Sandbox Code Playgroud)

工作没有任何问题。

如果您还需要检索时区,则还必须添加z到您的模式中:

    DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)