0

PHPの日付/時刻を使用して、最後の/前の30分マークを取得するにはどうすればよいですか?

したがって、15:31 から 16:29 までの時間は、最後の 30 分マークであるため、15:30 になるはずです。

そして、議事録を動的に変更できるようにしたいと考えています。したがって、分を 15 に設定すると、最後/前の :15 分マークが取得されます。したがって、15:16 から 16:14 までは 15:15 を返します。

これは私が持っているものですが、機能させることができません...

function newtime($time, $offset) {
                                $prev = $time - $offset;
                                $newtime = ($offset > 900) ? ($prev - 1800) : ($prev);
                                return $newtime;
                            }

                            $hours = date("H", time());
                            $minutes = date("m", time());               
                            echo 'Current date: ' . date("Y-m-d H:i:s", time()) . '<br/>';
                            $time = strtotime("2013-01-23 15:35:00");
                            echo 'time: ' . date("Y-m-d H:i:s", $time) . '<br/>';
                            $offset = ($time % 1800);
                            echo 'prev: ' . $offset . '<br/>';
                            $newtime = newtime($time, $offset);
                            echo date("Y-m-d H:i:s", $newtime) . '<br/><br/>';

それは本当に難しいです、私はそれについて頭を包むことができません。

どんな助けでも大歓迎です!

4

2 に答える 2

3

次のようなことを試してください:

<?
function newtime($time,$minute=30){
    $time=strtotime($time);
    $m=date("i",$time)*1;
    $h=date("H",$time)*1;
    if($m<$minute){
        $h=$h-1;
    }
    return date("H:i",strtotime($h.":".$minute));
}

print newtime("15:31");
//OUTPUT: 15:30
print newtime("16:29");
//OUTPUT: 15:30

print newtime("15:16",15);
//OUTPUT: 15:15
print newtime("16:14",15);
//OUTPUT: 15:15
?>
于 2013-01-23T14:24:48.910 に答える
2
function newtime ($time, $offset)
{
    // First, calculate the offset in seconds:
    $offset_sec = $offset * 60;

    // Next, fetch unix timestamp from $time
    $unix_time = strtotime($time);

    // Then calculate the modulo
    $modulo = $unix_time % $offset_sec;

    // Calculate latest timestamp
    $last_time = $unix_time - $modulo;

    // Display latest timestamp
    return date('H:i',$last_time);
}
于 2013-01-23T14:25:08.753 に答える