まめ畑

ゆるゆると書いていきます

PHPでTwitterの時刻を変換する方法

TwitterAPIを使えば投稿時刻は簡単に取得できるのですが、HTMLをパースする場合は○分前とかといった感じで出ているので、どうしたものかと思っていたら、abbrタグのtitle属性にセットされているんですね。


しかし、この属性値はISO8601形式で書かれているのと日本時間に直すために+9時間をする必要があります。
そこでPHPで変換するためのメモ。
ついでに、HTMLからtitle属性をとる方法も(要 HTTP_Request)

<?php
require_once 'HTTP/Request.php';

   //タイムラインを取得してパース
   $request = new HTTP_Request(アドレス);
   $respons = $request->sendRequest();
   if(PEAR::isError($respons)){
       throw new Exception("Timeline get ERROR");
   }
   $dom = @DOMDocument::loadHTML($request->getResponseBody());
   $xml = simplexml_import_dom($dom);

   //時刻を取得
   $entry_array = $xml->xpath("//td[@class=\"content\"]");
   $i = 0;
   foreach($entry_array as $entry){
      $time = $this->getJpTime((string)$entry->span[1]->a[0]->abbr[0]["title"]);
      //ここで日本時間に変換し整形
      $contents[$i++] = date("Y/m/d H:i:s",strtotime($time));
   }
?>

これだけ。
表示の仕方を変えるのも簡単。


strtotimeは「英文形式の日付・時刻式をUNIXタイムスタンプに変換」という機能をもった関数だそうで。
かなり便利そう。

・今の日時を出す
strtotime("now");

・1週間後を算出
strtotime("+1 week")

こんな感じで使えます。
あとは、date関数に入れて整形して表示させるだけ。


便利すぎだろ。