如何将分钟转换为小时& PHP中的分钟和负分钟?

时间:2014-01-11 06:23:11

标签: php mysql time date-arithmetic

我到处寻找,但找不到可以帮助我的具体答案。

我正在努力解决这个问题。我们有一个系统,员工可以累积并使用时间代替。因此,在MySQL数据库中记录分钟数,并添加或删除天气。

然后我有一个函数来计算当前欠员工或业务的分钟数,如果员工欠业务时间,可能会偶尔导致负数。

我使用此功能将总分钟转换为小时和分钟。但是当说-15分钟时,函数返回-1hr -15mins。我理解这种情况发生的原因,但无法找到阻止它的方法。

function convertTime() {
$args = func_get_args();
switch (count($args)) {
    case 1:     //total minutes was passed so output hours, minutes
        $time = array();

        $time['hours'] = floor($args[0]/60);

        $time['mins'] = ($args[0]%60);
        return $time;
        break;
    case 2:     //hours, minutes was passed so output total minutes
        return ($args[0] * 60) + $args[1];
}
}

我非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:3)

正如在comment on the php documentation of floor()中提到的那样,您应该使用intval()函数,以便为每个整数实现向0的舍入。

因此,将小时计算行更改为以下内容:

 $time['hours'] = intval($args[0]/60);

答案 1 :(得分:0)

问题在于,向下你想要做的是将向零四舍五入。据我所知,没有一个功能可以做到这一点,但这可行:

function convertTime() {
    $args = func_get_args();
    switch (count($args)) {
        case 1:     //total minutes was passed so output hours, minutes
            $time = array();

            $time['hours'] = $args[0] > 0 ? floor($args[0]/60) : ceil($args[0]/60);

            $time['mins'] = ($args[0]%60);
            return $time;
            break;
        case 2:     //hours, minutes was passed so output total minutes
            return ($args[0] * 60) + $args[1];
    }
}

我添加了一个三元运算符,基本上说“如果分钟大于零,则将小时数减去。否则,将小时数向上(向零)。”

编辑:改为使用@ s1lence的答案!