我正在尝试使用日期格式的两组日期:
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)
答案 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
作为第二个参数传递。