1. HOME
  2. PHP
PHP 公開

記事更新日

PHPで時間操作のTipsです。
以前に公開した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】
ここであんまり使わない【%】が必要になるとは。。。