最近良くある、投稿時間の○○前ってやつをPHPで。

ただの秒数計算です。以下のコードはSmartyのプラグインですが、見たらわかるので、他でも利用できると思います。
$timestampに計算したいタイムスタンプを入れる
$newtimeには計算のもととなる時間を入れる(未入力の場合はtime()で現在の時間を利用する)

<?php
/**
 * modifier.backtime.php
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */
function smarty_modifier_backtime($timestamp,$newtime=null)
{
$now = strtotime($timestamp);
$new = ($newtime)? $newtime : time();
$tt = $new - $now;
// 渡された時間と、現在の時間の差分を計算
if( $tt >= 0 && $tt < 10  ){   // 0秒~10秒
$result = sprintf("たった今");
}elseif( $tt >= 10 && $tt < 60 ){ // 10秒~60秒
$result = sprintf("%d秒前",$tt);
}elseif( $tt >= 60 && $tt < 3600 ){  // 60秒~1時間
$result = sprintf("%d分前",$tt/60);
}elseif( $tt >= 3600 && $tt < 86400 ){  // 1時間~24時間
$result = sprintf("%d時間前",$tt/60/60);
}elseif( $tt >= 86400 && $tt < 2592000 ){  // 24時間~30日
$result = sprintf("%d日前",$tt/60/60/24);
}else{
$result = $timestamp;
}
return $result;
}

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。