SimpleDateFormat 抛出 +0100 的解析异常
SimpleDateFormat throws parse Exception for +0100
我正在尝试使用日期格式的两组日期:
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
,解析器将忽略零 (+0000
) 情况,但 不是 非零 (+0100
) 案件。 lenient
属性 控制此行为(确认@Marko Topolnik)。
由于您使用的是英文星期名称,因此您应该使用双参数构造函数 SimpleDateFormat
,将 Locale.ENGLISH
作为第二个参数传递。
它在 offset 0
失败,这意味着问题与 时区 无关,而是与 day in letters 有关].
您应该设置 SimpleDateFormat
的 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);
我正在尝试使用日期格式的两组日期:
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
,解析器将忽略零 (+0000
) 情况,但 不是 非零 (+0100
) 案件。 lenient
属性 控制此行为(确认@Marko Topolnik)。
由于您使用的是英文星期名称,因此您应该使用双参数构造函数 SimpleDateFormat
,将 Locale.ENGLISH
作为第二个参数传递。
它在 offset 0
失败,这意味着问题与 时区 无关,而是与 day in letters 有关].
您应该设置 SimpleDateFormat
的 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);