アンテナサイトで〇分前、〇日前といった表示がありますよね。

ブログの記事やECサイトの商品など、登録日からどれだけ時間が経過したのか表示したい時ってありませんか?

タイムスタンプに変換された登録日から、現在の時間までどれだけ経過したのか計算して

  • 〇秒前
  • 〇分前
  • 〇時間前
  • 〇日前
  • 〇週刊前
  • 〇ヶ月前
  • 〇年前

といった表示を返してくれる関数を作成しました。

作成したのが結構昔なので、参考にしたサイトを覚えてないので、参考サイトの紹介は控えます。

現在までの時間でなくても〇日~〇日といった間の時間計算も可能ですよ。

経過時間を表示する関数作成

経過時間を計算し、〇秒前、〇分前といった表示を返してくれる関数になります。

function diffTime($startTime, $endTime){

    if($startTime > $endTime){
        return;
    }

    $diffTime = $endTime - $startTime;

    if(60 > $diffTime){
        return sprintf("%d秒前",$diffTime);
    }elseif(3600 > $diffTime){
        return sprintf("%d分前",floor($diffTime/60));
    }elseif(86400 > $diffTime){
        return sprintf("%d時間前",floor($diffTime/3600));
    }
    
    $diffDay = floor($diffTime / 86400);
    if(7 > $diffDay){
        return sprintf("%d日前",$diffDay);
    }elseif(31 > $diffDay){
        return sprintf("%d週間前",$diffDay/7);
    }elseif(365 > $diffDay){
        return sprintf("%dヶ月",$diffDay/30);
    }else{
        return sprintf("%d年前",floor($diffDay/365));
    }
}

関数の使い方

//例としてそれぞれタイムスタンプが入力されていると仮定
$startTime = 1523716865;
$endTime = 1523716870;

echo diffTime($startTime,$endTime); //5秒前と表示されます。

使う場面は少ないかもですが、必要な時があれば是非使ってください。