便利なユーザー定義関数twitter_time_optとか(PHP)
twitter APIで得た時間(Sat, 07 May 2011 01:42:58 +0000)を何秒前とか、何時間前とかにしたい時とか。
関数の頭のガチャガチャですが、strtotime()を使うと月がアルファベット表記だろうがなんだろうが、ローカルなUnixTimeで返してくれます。便利。
strtotime()で有効な日付と時刻の書式はこちら。
<?php
$string = 'Sat, 07 May 2011 01:42:58 +0000';
function twitter_time_opt($string) {
list($week, $day, $month, $year, $time, $base) =
explode(" ", $string);
list($hour, $min, $sec) = explode(":", $time);
$month_opt = array(
'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04',
'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08',
'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12');
$month = $month_opt[$month];
$w_time = mktime($hour, $min, $sec, $month, $day, $year) + 9*60*60;
$n_time = time();
$d_time = $n_time - $w_time;
switch ($d_time) {
case ($d_time > 365*24*60*60):
$time_opt = '1年以上前';
return $time_opt;
break;
case ($d_time > 30*24*60*60):
$time_opt = '約' . floor($d_time / (30*24*60*60)) . 'ヶ月前';
return $time_opt;
break;
case ($d_time > 24*60*60):
$time_opt = '約' . floor($d_time / (24*60*60)) . '日前';
return $time_opt;
break;
case ($d_time > 60*60):
$time_opt = '約' . floor($d_time / (60*60)) . '時間前';
return $time_opt;
break;
case ($d_time > 60):
$time_opt = '約' . floor($d_time / 60) . '分前';
return $time_opt;
break;
default:
$time_opt = $d_time . '秒前';
return $time_opt;
break;
}
}
?>
関数の頭のガチャガチャですが、strtotime()を使うと月がアルファベット表記だろうがなんだろうが、ローカルなUnixTimeで返してくれます。便利。
strtotime()で有効な日付と時刻の書式はこちら。
[PR] 全てが規格外!しかも1年間の全額返金保証!! [PR]