我正在使用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的可能副本关闭。
答案 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';
}