計算方法
結局
1388588400 – 1388674800 = 86400をやれば計算ができるので
$date = date($kintai->date);
//diff
$inTime = $date . $kintai->get_time;
$outTime = $date . $kintai->out_time;
//時間差分を計算
$workTime = (strtotime($outTime) - strtotime($inTime)) / 60 - 480; //分
$divide = floor($workTime / 60); //時間
$percent = floor($workTime % 60); //60分単位
$seconds = "00"; //秒
$format = "%s:%s:%s";
$result = sprintf($format, $divide, $percent, $seconds);
$kintai->over_time = $result;
date(“Y/m/d H:i:s”) ; の状態を作ってから計算をし
sprintfを使いformatで固める
参考
UNIX TIMESTAMPについて
PHPに限らず、
プログラミングにおいて時間に関するデータを取り扱う場合、
利用するのは、この「UNIX TIMESTAMP」「UNIX時間」などとも言われる。
次のようなデータが、UNIX TIMESTAMPだ。
1449465487
UNIX TIMESTAMPの活用方法
例えば、次は2014年1月2日 00時00分00秒時点のUNIX TIMESTAMP。
1388588400
続いて、次が2014年1月3日 00時00分00秒時点のUNIX TIMESTAMP。
1388674800
この2つの数値の差を計算すると、次のようになる。
1388588400 - 1388674800 = 86400
このように、2つの時点のUNIX TIMESTAMPを求めて、その差がどれくらいあるかで経過時間を判断し、処理を条件分けすることができる。
time()の使用
// UNIX TIMESTAMPを[$timestamp]という変数に格納する
$timestamp = time() ;
// 出力する
echo $timestamp ;
//出力結果
1449465487
date()の使用
日時を出力するには、date()という関数を利用する。
第1引数にパラメータを指定すると、それらが日時形式に変換される。
「いつの日時を出力するか?」というと、第2引数に指定した、UNIX TIMESTAMPが基準になる。
date ( フォーマット, UNIX TIMESTAMP)
第2引数を省略すると、現在時刻time()が基準になる。そのため、下記だけの表記を見ることも多い。
date ( フォーマット)
date("Y/m/d ") ; //2015/03/10 06:00:00
date("Y/m/d H:i:s") ; //2015/03/01
②strtotime時間の差を計算
strtotime関数は引数を1つ(or2つ)持てる
第1引数:日時(string)。相対日時や絶対日時を指定可能。
第2引数:タイムスタンプ(int)
引数1つの時:「現在」を基準とした、「第1引数の日時」のタイムスタンプを出力
引数2つの時:「第2引数のタイムスタンプ」を基準とした、「第1引数の日時」のタイムスタンプを出力
戻り値はint
$time = strtotime('2017-8-1 12:30:30');
// 表示
echo $time;
結果
1501590630
$date1 = date("2016-11-17 12:00:00");
$date2 = date("2016-11-17 14:00:00");
$diff_hour = (strtotime($date2) - strtotime($date1)) / 3600;
③
echo date("Y-m-d", strtotime("today"));