SimpleDateFormat抛出+0100的解析异常

时间:2016-09-07 11:47:01

标签: 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.text.DateFormat.parse(DateFormat.java:555)

2 个答案:

答案 0 :(得分:4)

offset 0处失败,这意味着该问题与时区无关,而与字母相关。

您应该设置Locale的{​​{1}}。

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

z

答案 1 :(得分:3)

你需要

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");

请注意时区的z

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

由于您正在使用英文周名称,因此您应该使用双参数构造函数SimpleDateFormat,并将Locale.ENGLISH作为第二个参数传递。