Java 使用Joda Time解析Twitter日期
推特给了我一个日期,比如“Wed,2013年3月27日15:12:14+0000”。 我正试图用以下方法解析它:Java 使用Joda Time解析Twitter日期,java,twitter,jodatime,date-parsing,Java,Twitter,Jodatime,Date Parsing,推特给了我一个日期,比如“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" 我尝试用z、z和ZZZ替换ZZZ,但没有改
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"
我尝试用
z
、z
和ZZZ
替换ZZZ
,但没有改变。这些日期可以这样解析吗?虽然您说过在格式模式中使用了单个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; 美国/洛杉矶
有关更多信息,请参见虽然公认的答案是正确的,但我从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)
注意:其他问题,似乎是问同样的事情,实际上是使用不同的格式。