PHP:获得前半个小时的标记

时间:2013-01-23 14:07:58

标签: php date hour

如何使用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/>';

这真的很难,我无法绕过它。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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
?>

答案 1 :(得分: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);
}