【问题标题】:Twitter date cannot parse [duplicate]Twitter日期无法解析[重复]
【发布时间】:2015-03-27 04:55:45
【问题描述】:

你可以猜到我试图解析一个 twitter 日期,所以我可以将它应用到一个表中,代码是关于它现在的样子:

Date d = t.getCreatedAt();
String dateString = d.toString();
 SimpleDateFormat f = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZZZ");
    try {
      Date parsed = f.parse(dateString);
      System.out.println(" 2. " + parsed.toString());
    }
    catch(ParseException pe) {
        System.out.println("ERROR: Cannot parse \"" + dateString + "\"");
}

我收到的只是错误消息:(

ERROR: Cannot parse "Thu Mar 26 20:10:48 GMT 2015"

更新: 所以尝试了下面链接到没有快乐的东西,我在整个代码中添加了尝试。我也在使用处理

{
  QueryResult result = twitter.search(query);
  ArrayList tweets = (ArrayList) result.getTweets();

  for (int i = 0; i < tweets.size (); i++) {
  Status t = (Status) tweets.get(i);
  User u=(User) t.getUser();
  String user=u.getName();

  String msg = t.getText();
  Date d = t.getCreatedAt();


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


  println("Tweet by " + user + " at " + d + ": " + msg);
  //Break the tweet into words
  String[] input = msg.split(" ");

  println(input);

  TableRow newRow = table.addRow();
  newRow.setString("Name", u.getName());
   newRow.setString("Date", d.getDate());
  newRow.setString("Tweet", t.getText());

  for (int j = 0; j < input.length; j++) {
    //Put each word into the words ArrayList
    words.add(input[j]);
  }
};

显然我想通过格式化日期传递给newRow.setString("Date", d.getDate());

更新如下所示:

Date d = t.getCreatedAt();
  //Thu Mar 26 20:21:09 GMT 2015 (time format)
  //try catch to test
  //after reformatting using Sdf it works
  String dateString = d.toString();
  SimpleDateFormat f = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
  try {
    Date parsed = f.parse(dateString);
    System.out.println(" 2. " + parsed.toString());
  }
  catch(ParseException pe) {
    System.out.println("ERROR: Cannot parse \"" + dateString + "\"");
  }
  println("Tweet by " + user + " at " + d + ": " + msg);
  //Break the tweet into words
  String[] input = msg.split(" ");

  println(input);

  TableRow newRow = table.addRow();
  newRow.setString("Name", u.getName());
  newRow.setString("Date", d.toString());
  newRow.setString("Tweet", t.getText());

一如既往的感谢:)

【问题讨论】:

标签: java api parsing date twitter


【解决方案1】:

如果您打算创建一个日期并以您提供的格式打印出来,我认为您正在寻找以下内容:

System.out.println(" 2. " + f.format(d));

但是,如果您真的希望能够解析 dateString,则必须更改格式以匹配 dateString 所在的格式。即

SimpleDateFormat f = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZZ yyyy");

【讨论】:

  • 我不熟悉 twitter 日期 - 但我猜第一行代码只适用于 java.util.Date。
  • 刚刚更新,一切正常 :) 无论如何谢谢
【解决方案2】:

有几个问题首先是我在这里找到的日期格式http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 很简单,可以通过,当我将日期传递给我的表时,我还必须声明d.toString()

  String msg = t.getText();
  Date d = t.getCreatedAt();
  //Thu Mar 26 20:21:09 GMT 2015 (time format)
  //try catch to test
  //after reformatting using Sdf it works
  String dateString = d.toString();
  SimpleDateFormat f = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
  try {
    Date parsed = f.parse(dateString);
    System.out.println(" 2. " + parsed.toString());
  }
  catch(ParseException pe) {
    System.out.println("ERROR: Cannot parse \"" + dateString + "\"");
  }
  println("Tweet by " + user + " at " + d + ": " + msg);
  //Break the tweet into words
  String[] input = msg.split(" ");

  println(input);

  TableRow newRow = table.addRow();
  newRow.setString("Name", u.getName());
  newRow.setString("Date", d.toString());
  newRow.setString("Tweet", t.getText());

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多