6

Twitter 给了我一个日期,例如“Wed, 27 Mar 2013 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改变。这些日期可以这样解析吗?

4

2 回答 2

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;美国/洛杉矶

有关更多信息,请参阅javadoc

于 2013-04-03T12:53:42.323 回答
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)
于 2017-03-15T16:40:30.410 回答