Twitter日期不可解析?

And*_*uer 13 java twitter date

我想将Twitter响应中的日期字符串转换为Date对象,但我总是得到一个ParseException,我看不到错误!?!

输入字符串:Thu Dec 23 18:26:07 +0000 2010

SimpleDateFormat 图案:

EEE MMM dd HH:mm:ss ZZZZZ yyyy
Run Code Online (Sandbox Code Playgroud)

方法:

public static Date getTwitterDate(String date) {

SimpleDateFormat sf = new SimpleDateFormat(TWITTER);
sf.setLenient(true);
Date twitterDate = null;
try {
    twitterDate = sf.parse(date);
} catch (Exception e) {}
     return twitterDate;
}
Run Code Online (Sandbox Code Playgroud)

我也试过这个:http://friendpaste.com/2IaKdlT3Zat4ANwdAhxAmZ但是给出了相同的结果.

我在Mac OS X上使用Java 1.6.

干杯,

和我

Mic*_*zka 30

您的格式字符串适用于我,请参阅:

public static Date getTwitterDate(String date) throws ParseException {

  final String TWITTER="EEE MMM dd HH:mm:ss ZZZZZ yyyy";
  SimpleDateFormat sf = new SimpleDateFormat(TWITTER);
  sf.setLenient(true);
  return sf.parse(date);
  }

public static void main (String[] args) throws java.lang.Exception
    {
      System.out.println(getTwitterDate("Thu Dec 3 18:26:07 +0000 2010"));          
    }
Run Code Online (Sandbox Code Playgroud)

输出:

星期五12月03日18:26:07 GMT 2010

UPDATE

Roland Illig是对的:SimpleDateFormat是依赖于Locale的,所以只需使用一个明确的英语语言环境: SimpleDateFormat sf = new SimpleDateFormat(TWITTER,Locale.ENGLISH);

  • 丢失的Locale信息就可以了!谢谢 :) (4认同)

Dav*_*vid 5

这对我有用;)

public static Date getTwitterDate(String date) throws ParseException
{
    final String TWITTER = "EEE, dd MMM yyyy HH:mm:ss Z";
    SimpleDateFormat sf = new SimpleDateFormat(TWITTER, Locale.ENGLISH);
    sf.setLenient(true);
    return sf.parse(date);
}
Run Code Online (Sandbox Code Playgroud)