PHPの時間比較にmktimeを用いる
PHPで経過時間を求める場合には、
日付を含めた時間をmktime化して、現在のmktimeと比較する
という方法をよく利用している。
$pretime = mktime(時, 分, 秒, 月, 日, 年); //過去のある時点 $now = mktime(); //現在時刻 $d = $now - $pretime; //比較 $d = $d/60; //分に変換 if ( (int)$d > 720 ) //12時間以内かどうか? { }
$pretimeに過去のある時点をmktime化して、同様にmktime化した$nowとの差を求め、その差を分に変換している。
mktimeの具体例
例えば、
2013-07-19T10:18:33+02:00
という文字列の時間データがあったとする。
その場合には、以下のようにしてmktime化して時刻の経過時間を求めることができる。
$div = split("T", "2013-07-19T10:18:33+02:00"); $div_year = split("-", $div[0]); $div_hour_org = explode("+", $div[1]); $div_hour = split(":", $div_hour_org[0]); $pretime = mktime($div_hour[0], $div_hour[1], $div_hour[2], $div_year[1], $div_year[2], $div_year[0]); $now = mktime(); $d = $now - $pretime; $d = $d/60; if ( (int)$d > 720 ) //12時間以内 { }
一定の時間内かどうかを調べる
午前2時から午前5時の間を判定する場合には、mktimeを以下のように利用することができる。
if ( time() > mktime(2,0,0) and time() < mktime(5,0,0) ) { }