PHPの時間関係の関数ややこしいですね。
なかなか想い通りのものを作るのに時間が掛かったので、忘備録として下記に指定時刻があと何時何分かを取得する関数を記載します。
/*
* 指定時刻があと何時何分か'##:##'の書式文字列で取得する。
* $time_expr: '13:15' のような時刻文字列を指定する。
*/
function get_time_left($time_expr){
$now = time();
$target = date("Y-m-d {$time_expr}:00", $now);
// 既に過ぎた時間であれば、翌日の日付にする。
if (strtotime($target) < $now){
$tommorow = date('d', $now) + 1;
$target = date("Y-m-{$tommorow} {$time_expr}:00");
}
$diff = strtotime($target) - $now;
$diff_hour = intval($diff / 3600);
$diff_minutes = intval($diff / 60) % 60;
return sprintf("%02d:%02d", $diff_hour, $diff_minutes);
}
echo get_time_left('0:00') . "\n";
echo get_time_left('4:30') . "\n";
echo get_time_left('12:20') . "\n";
echo get_time_left('23:00') . "\n";
夜中の2時ちょうどに実行した時の出力結果22:00
02:30
10:20
21:00
指定の時刻が過ぎた時間であれば、翌日の時間までを返すようにしています。なにか決まった時刻にイベントがある時に、あと何時間か取得する時に使えます。
0 件のコメント:
コメントを投稿