Java 不可解析的日期异常SimpleDataFormat

Java 不可解析的日期异常SimpleDataFormat,java,parsing,datetime,simpledateformat,timezone-offset,Java,Parsing,Datetime,Simpledateformat,Timezone Offset,在使用simpleDataFormat解析字符串到日期对象时,我发现以下错误 java.text.ParseException:不可解析日期:“2016年3月29日星期二11:27:37-0400” 我用来解析日期的代码是: DateFormat df2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 我能够解析日期,如2016年6月13日星期一11:48:54+0300 我注意到一件事,有+ve时区(+0300)的日期正在被解析,但

在使用
simpleDataFormat
解析字符串到日期对象时,我发现以下错误

java.text.ParseException:不可解析日期:“2016年3月29日星期二11:27:37-0400”

我用来解析日期的代码是:

DateFormat df2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
我能够解析日期,如2016年6月13日星期一11:48:54+0300


我注意到一件事,有
+ve
时区(+0300)的日期正在被解析,但
-ve
时区(-0400)没有被解析。

我怀疑问题在于您的默认区域设置不是英语(可能是德语,这可以解释为什么Mon可以工作(Montag)而不是Tue(Dienstag)?)

只需将英语指定为区域设置:

DateFormat df2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date date = df2.parse("Tue, 29 Mar 2016 11:27:37 -0400");
System.out.println(date); //prints Tue Mar 29 15:27:37 GMT 2016

上面的代码在我的机器上运行良好。

可能是“非常规的”
-
类似–或者它不像周一或周二,因为我一周中的所有日子都会出错。我注意到的一个常见问题是只有-ve时区。@user2779095我建议的解决方案与您问题中的输入配合得很好:-您能显示一个吗?你在运行什么版本的Java?我正在使用jdk1.6.0_21版本。还有一件事。我正在使用DateFormat df=new SimpleDateFormat(“d MMM yyy HH:mm:ss Z”)解析日期,如“2016年3月24日22:58:29+1100”和“2016年3月27日15:55:54-0700”;正在对其进行分析,没有任何问题。@user2779095您仍然没有显示输入!您的问题可能是
msgs
不包含您认为它的功能。除非你建立了一个团队,否则很难帮助你!