如何将facebook响应日期转换为unix时间戳

时间:2015-03-16 11:34:10

标签: java android facebook-graph-api datetime simpledateformat

我可以在我的Android应用程序中获取所有用户提供给facebook graph api。以下是updated_time键的日期字符串:

  2014-12-14T18:23:17+0000

首先,我无法找到此字符串的格式。从谷歌我才知道,这可能是RFC 2822 date format

我想将此日期字符串转换为unix时间戳以获取新的用户Feed。如何将此字符串转换为unix时间戳?

如果我尝试使用以下格式解析此字符串,我将获得null date:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);

2 个答案:

答案 0 :(得分:2)

建议从日期中删除+0000,因为这是时区信息。然后单独处理时区,即作为整数,您可以通过将时区剥离并将其转换为毫秒来从毫秒时间加上或减去它。

public static long getDateInMillis(String srcDate) {
    try {
        SimpleDateFormat desiredFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

        long dateInMillis = 0;
        try {
            Date date = desiredFormat.parse(srcDate);
            dateInMillis = date.getTime();
            return dateInMillis;
        } catch (ParseException e) {
            e.printStackTrace();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    return 0;
}

答案 1 :(得分:1)

您的格式模式错误。

String timeStamp = "2014-12-14T18:23:17+0000";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);
System.out.println("Unix timestamp: " + dateFormat.parse(timeStamp).getTime());