2013-01-15 37 views
2

我正在使用Facebook圖形API來搜索匹配特定查詢的帖子。但我找不到有關以json格式返回的時間戳的時區的任何文檔。時間返回與facebook圖搜索職位api

我的查詢是this和響應的JSON arrray其中每個元素具有時間戳,看起來像這樣: 2013-01-15T14:27:49 + 0000

如何利用這個時間標記(無時間區域信息)在外部網站上顯示fb內容:

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

編輯:我正在爲後端實現使用grails框架。因此,使用PHP代碼來獲取時間戳信息不會很容易

編輯2:我使用的搜索API來搜索在所有可公開訪問的職位,所以我不起訴任何訪問令牌。

編輯3:關閉這個問題進行this可能重複。

+0

您可以從用戶連接https://developers.facebook.com/docs/reference/api/user/獲取用戶時區並從中解決問題嗎? – TommyBs

+0

@TommyBs我剛剛看過api和時區信息僅適用於當前用戶 – bhavs

+0

如果您還沒有找到滿意的答案,那麼您是否可以澄清您要查找的內容? – Bartek

回答

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

+0

@Shail感謝您對本PHP代碼,但不幸的是,我在獲取Java中的JSON格式和處理這些信息,因此我將映射這個PHP代碼的Java代碼 – bhavs

+0

不是一個大ISSU,你仍然可以使用這個fnction :) –

+0

我正在考慮將代碼移植到java,但我無法弄清楚$值是什麼? – bhavs

4

看一看在Facebook中的文檔的Dates然後ISO 8601 Time Zone

在你的例子中2013-01-15T14:27:49+0000這個字符串表示14:27:49 UTC(因爲它後面跟着+0000)。

編輯
讓我對我的回答擴展。一旦知道UTC時間,獲得想要在頁面上顯示的時差是很容易的。您可以檢查UTC時間戳在您的時區對應的時間,然後將其與當前時間進行比較,或者檢查當前的UTC,並計算它與時間戳之間的差異。

如果你不知道該怎麼做,也許有一個看看Pretty Time Grails plugin