Facebook图表搜索帖子api返回的时间

时间:2013-01-15 16:25:34

标签: facebook facebook-graph-api

我正在使用facebook图形api来搜索匹配特定查询的帖子。但是我找不到任何关于以json格式返回的时间戳的时区的文档。

我的查询是this,JSON arrray的响应是每个元素都有一个timeStamp,如下所示: 2013-01-15T14:27:49 + 0000

如何使用此timeStamp(没有时区信息)在外部网站上显示fb内容:

 <snip>post content </snip> poster-profile image</snip>
   < snip> post created 5 minutes ago </snip> 

编辑:我正在使用grails框架进行后端实现。因此使用php代码获取timeStamp信息并不是很容易

编辑2:我使用搜索API搜索所有可公开访问的帖子,所以我没有起诉任何访问令牌。

编辑3:将此问题作为this的可能副本关闭。

2 个答案:

答案 0 :(得分:4)

查看Facebook文档中的Dates,然后查看ISO 8601 Time Zone

在您的示例2013-01-15T14:27:49+0000中,字符串表示14:27:49 UTC(因为后跟+0000)。

EDIT
让我扩展我的答案。一旦知道了UTC时间,就可以轻松获得想要在页面上显示的时差。您可以在时区中检查UTC时间戳对应的时间,然后将其与当前时间进行比较,或者检查当前的UTC时间,并计算它与时间戳之间的差异。

如果您不知道该怎么做,可以查看Pretty Time Grails plugin

答案 1 :(得分:1)

如果您使用的是PHP,可以使用它 -

// DISPLAYS COMMENT POST TIME AS "1 year, 1 week ago" or "5 minutes, 7 seconds ago", etc...
function time_ago($date,$granularity=2) {
    $date = strtotime($date);
    $difference = time() - $date;
    $periods = array('decade' => 315360000,
        'year' => 31536000,
        'month' => 2628000,
        'week' => 604800, 
        'day' => 86400,
        'hour' => 3600,
        'minute' => 60,
        'second' => 1);

    foreach ($periods as $key => $value) {
        if ($difference >= $value) {
            $time = floor($difference/$value);
            $difference %= $value;
            $retval .= ($retval ? ' ' : '').$time.' ';
            $retval .= (($time > 1) ? $key.'s' : $key);
            $granularity--;
        }
        if ($granularity == '0') { break; }
    }
    return ' post created '.$retval.' ago';      
}

Reference