我到处寻找,但找不到可以帮助我的具体答案。
我正在努力解决这个问题。我们有一个系统,员工可以累积并使用时间代替。因此,在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];
}
}
我非常感谢任何帮助!!
答案 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的答案!