代码之家  ›  专栏  ›  技术社区  ›  beginner

从分钟数中获取年、月、日、分钟数

  •  -1
  • beginner  · 技术社区  · 6 年前

    93366 你应该回来 2 months ,5 days and 5 hours . 这是我迄今为止尝试过的。

    function convert_minutes($minutes, $output) {
        if ($minutes >= 43833) {
            $whole_month = 0;
            $decimal_month = 0;
            $label = "";
            $months = $minutes / 43833;
            list($whole_month, $decimal_month) = sscanf($months, '%d.%d');
            if ($months > 1) {
                $label = "months";
            } else {
                $label = "month";
            }
            $output .= $months . " " . $label;
            $decimal_month = "0." . $decimal_month;
            if ($decimal_month != 0) {
                return $this->convert_minutes($decimal_month, $output);
            } else {
                return $output;
            }
        } elseif ($minutes >= 1440) {
            $whole_day = 0;
            $decimal_day = 0;
            $label = "";
            $days = $minutes / 1440;
            list($whole_day, $decimal_day) = sscanf($days, '%d.%d');
            if ($days > 1) {
                $label = "days";
            } else {
                $label = "day";
            }
            $output .= $days . " " . $label;
            $decimal_day = "0." . $decimal_day;
            if ($decimal_day != 0) {
                return $this->convert_minutes($decimal_day, $output);
            } else {
                return $output;
            }
        } elseif ($minutes >= 60) {
            $whole_minutes = 0;
            $decimal_minutes = 0;
            $label = "";
            $min = $minutes / 60;
    
            list($whole_minutes, $decimal_minutes) = sscanf($min, '%d.%d');
            if ($min > 1) {
                $label = "minutes";
            } else {
                $label = "minute";
            }
            $output .= $min . " " . $label;
            $decimal_minutes = "0." . $decimal_minutes;
            if ($decimal_minutes != 0) {
                return $output . " and " . $decimal_minutes . " minutes";
            } else {
                return $output;
            }
        }
    }
    

    我只是想得到估计。假设1小时是60分钟,1天是1440分钟,1个月是43200分钟。我正在开发一个文档跟踪系统,只想根据接收日期和发布日期计算文档在特定办公室停留的时间。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andreas    6 年前

    可以使用floor和mod操作符。
    地板向下四舍五入一个数字。
    如果等分,模运算符将给出剩下的值。

    例子 5%2 = 1
    2*2 = 4

    Echo floor(93366/43200) . " months\n";
    $rem = 93366%43200;
    Echo floor($rem/1440) . " days\n";
    $rem = $rem%1440;
    Echo floor($rem/60) . " hours\n";
    Echo $rem%60 . " minutes";
    

    输出:

    2 months
    4 days
    20 hours
    6 minutes
    

    https://3v4l.org/RreDY