2013-04-03 18 views
5

Twitter给我一个日期,如“星期三,2013年3月27日15:12:14 +0000”。 我试图与解析它:解析与约达时间的Twitter日期

DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss ZZZZZ").withLocale(Locale.ENGLISH); 

但它失败:

Invalid format: "Wed, 03 Apr 2013 10:35:35 +0000" is malformed at "+0000" 

我试着zZZZZ,但没有改变更换ZZZZZ。这些日期可以这样解析吗?

+0

注意:其他似乎要求相同内容的问题其实使用不同的格式。 –

回答

7

虽然你说你已经使用格式模式单一Z,这个工程:

DateTimeFormatter format = 
    DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss Z").withLocale(Locale.ENGLISH); 
DateTime dateTime = format.parseDateTime("Wed, 27 Mar 2013 15:12:14 +0000"); 

当解析这种格式的单个Z时区字符就足够了,4是无效的:

Z时区偏移/ ID区域-0800; -08:00;美洲/洛杉矶

更多看到the javadoc

0

虽然接受的答案是正确的,我正在从API获取Twitter的日期不同。此替代解析器适用于该格式:

DateTimeFormatter format = DateTimeFormat.forPattern("EE MMM dd HH:mm:ss Z yyyy").withLocale(Locale.ENGLISH) 
String input = "Sat Jan 14 01:50:54 +0000 2017" 
DateTime dateTime = format.parseDateTime(input)