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);还是不行,谢谢。。它正在工作。。我传递的字符串有一些额外的空格,这导致了问题