TwitterAPIで取得したツイートの投稿時間を「○分前」といった相対表記に変換する方法。
Twitterではツイートの投稿時間の表示方法として、「○分前に投稿」といったツイートが投稿された時間からの経過時間表記を標準としています。
んで、TwitterAPIで取得したツイートの投稿時間を投稿からの経過時間で表示する方法です。
以下PHPで。
/* * 投稿時間からの経過時間を返す * @param string $created_at 投稿時間 * */ function getPassedTime($created_at) { $now = date_create(date('Y-m-d H:i:s'));//(*1) $created = date_create(date('Y-m-d H:i:s', strtotime($created_at)));//(*2) $passed = date_diff($now, $created); switch (true) : case ($passed->y):return $passed->y . '年前'; case ($passed->m):return $passed->m . 'ヶ月前'; case ($passed->w):return $passed->w . '週間前'; case ($passed->d):return $passed->d . '日前'; case ($passed->h):return $passed->h . '時間前'; case ($passed->i):return $passed->i . '分前'; default: return $passed->s . "秒前"; endswitch; }
こんな感じ。
補足:
記事の都合上、(*1)で現在時間を第二引数無しのdateで取ってしまってるので、ローカルの時計と、ローカルのタイムゾーン(Asia/Tokyo)が反映されるため、(*2)でちょっと面倒なことになってるけれど…。
現在時間もヘッダから拾ってきて、それぞれGMTな現在時間・投稿時間を直にdate_createすれば、もう少しシンプルになるはず。(タイムゾーンを意識する必要がないし、結果となる経過時間がローカルの時間に依存しないから。)
どうでも良いけれど…。
正直、個人的には2014/01/01 02:15:01 JST みたいな時間表示の方が、データの取得時間を意識する必要がないので好きなので「めんどくさいなー」と思ったのですが、↑の書いてるうちに「あぁ。そうか。」と。
補足で書いているように、相対表示、やり方によっては、タイムゾーンを意識する必要がないのはメリットかもれないかな〜と。世界広いし。
どちらにしても、相対表記のみでは情報不足なので、完全な時間表示は必要になるけれど。
スポンサード リンク