2

FacebookグラフAPIを使用して特定のクエリに一致する投稿を検索していますが、json形式で返されたタイムスタンプのタイムゾーンに関するドキュメントが見つかりません。

私のクエリはこれであり、各要素に次のようなタイムスタンプがあるJSON arrrayの応答:2013-01-15T14:27:49 + 0000

このtimeStamp(タイムゾーン情報なし)を使用して、外部Webサイトにfbコンテンツを表示するにはどうすればよいですか。

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

編集:バックエンドの実装にgrailsフレームワークを使用しています。したがって、phpコードを使用してtimeStamp情報を取得するのは簡単ではありません。

編集2:私は検索APIを使用して、公的にアクセス可能なすべての投稿を検索しているので、アクセストークンを訴えていません。

編集3:これの重複の可能性があるとしてこの質問を閉じます

4

2 に答える 2

4

Facebook Docsの日付を見てから、ISO8601タイムゾーンを見てください。

あなたの例2013-01-15T14:27:49+0000では、文字列は14:27:49 UTCを意味します(その後に+0000)が続くためです。

編集
私の答えを拡張させてください。UTC時刻がわかれば、ページに表示したい時差を簡単に取得できます。UTCタイムスタンプがタイムゾーンで対応する時刻を確認してから現在の時刻と比較するか、現時点でのUTCを確認して、タイムスタンプとの差を計算することができます。

その方法がわからない場合は、PrettyTimeGrailsプラグインをご覧ください。

于 2013-01-15T17:09:01.180 に答える
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';      
}

参照

于 2013-01-15T16:43:24.993 に答える