【php】時間比較、時間を○時○分○秒等に変更する

php, WEB制作

PHPで時間操作のTipsです。
以前に公開したwordpress pluginで記事を書いた時間を表示する為に必要だったので、覚書しておきます。
【記事を書くのにかかった時間】を表示するwordpress pluginを公開しました

結構単純な計算式なんですが、めちゃくちゃ嵌って時間を費やしました><

スポンサーリンク

時間を比較してその差を○時○分○秒で出力

下記の例

現在時間2014/11/23 11:39
比較時間2014/11/16 10:10:30

この条件で比較しています。

date_default_timezone_set( 'Asia/Tokyo' );
$now_time = time();
$old_time = strtotime ("2014/11/23 10:10:30");

if($now_time > $old_time){
	$time = $now_time - $old_time;
} else{
	$time = $old_time - $now_time;
}

$show_day_time = floor($time / 86400);
$show_hor_time = floor($time / 3600);
$show_hor_time = floor($show_hor_time % 24);
$show_min_time = floor($time / 60);
$show_min_time = $show_min_time % 60;
$show_sec_time = $time % 60;

if( $time > 60 && $time < 3600){
	echo $show_min_time , '分' , $show_sec_time , '秒';
} elseif( $time > 3600 && $time < 86400){
	echo $show_hor_time , '時間' , $show_min_time , '分' , $show_sec_time , '秒';
} elseif($time > 86400){
	echo $show_day_time , '日' , $show_hor_time , '時間' , $show_min_time, '分' , $show_sec_time , '秒';
} else{
	echo $show_sec_time , '秒' ;
}

まずは一行目でタイムゾーンを設定。
二行目で現在時間をUNIXタイムで取得。
三行目は指定の時間をUNIXタイムで取得。
(この例では現在時間から一週間前の時間)

次に現在時間と比較する時間の条件分岐。
old_timeの変数の値が、現在時間よりも大きければ計算を逆にして、現在時間との差分を計算。

次に$show_day_timeから$show_sec_timeまでは日、時間、分、秒を変数に格納。

if( $time > 60 && $time < 3600){からの条件分岐で、それぞれのフォーマットで出力させる。 出力結果 7日1時間27分59秒

備忘録

PHPの時間操作では他に便利な関数があるので、こういった方法をあまり使わないと思いますが、用途によってはこういう書き方が必要になる場合もあると思います。

意外と嵌ったのが時間の計算式。
例えば比較時間の差が68分だとすると、1時間8分という形にしたい。
これ結構嵌りました><

正解は【分に変換した値 = 分に変換した値 % 60】
ここであんまり使わない【%】が必要になるとは。。。

この記事が気に入ったら
『いいね』しよう!