2013年9月16日月曜日

○○時まであと何時間何分?を取得する関数。(PHP)

FF14の方はLv.32の白魔導士までいきました。コンテンツファインダーのダンジョンがかなり難しくなってきていて、2,3回死ぬのが当たり前の状態になっています…汗。ただ、そういった激戦のあとはみんな達成感に満ちていて、なんかいい感じです。

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 件のコメント:

コメントを投稿