Java SimpleDataFormat为+;0100

Java SimpleDataFormat为+;0100,java,simpledateformat,date-parsing,Java,Simpledateformat,Date Parsing,我正在尝试使用两组日期格式的日期: DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); 在以下日期工作正常: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.t

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

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
在以下日期工作正常: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)
你需要

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
注意时区的
z

如果未提供
z
,但未提供非零(
+0100
)情况,则解析器将忽略零(
+0000
)情况。
lenient
属性控制此行为(Acknowledge@Marko Topolnik)


由于您使用的是英语周名称,因此应该使用双参数构造函数来
SimpleDateFormat
,将
Locale.English
作为第二个参数传递。

它在
偏移量0
处失败,这意味着问题与时区有关,而与日期有关

您应该设置
SimpleDataFormat
Locale

    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");
工作没有任何问题

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

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

但它仍然抛出同样的错误。我正在用AndroidSimpledTeformat format1=新的SimpledTeformat(“EEE,dd-MMM-yyy-HH:mm:ss-z”,Locale.ENGLISH)尝试这个方法;仍然没有luckSimpleDateFormat 1=新的SimpleDateFormat(“EEE,dd-MMM-yyy-HH:mm:ss z”,Locale.ENGLISH);仍然抛出与我盗取您的语言环境点相同的错误,需要问心无愧。SimpleDataFormat format1=新SimpleDataFormat(“EEE,dd-MMM-yyyy HH:mm:ss z”,locale.ENGLISH);还是不行,谢谢。。它正在工作。。我传递的字符串有一些额外的空格,这导致了问题