用Joda Time解析Twitter日期

时间:2013-04-03 12:47:42

标签: java twitter jodatime date-parsing

Twitter给了我一个日期,比如“Wed,2013年3月27日15:12:14 +0000”。 我试图解析它:

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"

我尝试用ZZZZZzZ替换ZZZ,但没有变更。这些日期可以用这种方式解析吗?

2 个答案:

答案 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

答案 1 :(得分:0)

虽然接受的答案是正确的,但我从API获得的推特日期却有所不同。此备用解析器适用于该格式:

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)