0

如何使用 PHP 日期/时间获取上一个/上一个半小时标记。

因此,从 15:31 一直到 16:29 的时间应该是 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 回答