KHN-プログラミングブログ-

PHP ⑧ 関数一覧 時間操作系

計算方法

結局

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で固める

参考

LINK

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"));