sprintf什么都没做 - 试图输出两位数(前导零)

时间:2014-06-24 07:24:16

标签: php printf

我有一个秒的时间功能,我想总是将分钟和秒值输出为两位数。换句话说,5将成为05。我在函数中使用了sprintf,但它没有做任何事情。这些值仍以单个数字形式返回。

//convert seconds to time
function convertSeconds($seconds)
{
    // extract hours
    $hours = floor($seconds / (60 * 60));

    // extract minutes
    $divisor_for_minutes = $seconds % (60 * 60);
    $minutes = floor($divisor_for_minutes / 60);

    // extract the remaining seconds
    $divisor_for_seconds = $divisor_for_minutes % 60;
    $seconds = ceil($divisor_for_seconds);

    // return the final array
    $obj = array(
        "h" => (int) $hours,
        "m" => (int) sprintf("%02d", $minutes),
        "s" => (int) sprintf("%02d", $seconds)
    );
    return $obj;
}

2 个答案:

答案 0 :(得分:1)

施法时遇到sprint()而不是变量的问题,请尝试

$obj = array(
        "h" => (int)$hours,
        "m" => sprintf("%02d", (int)$minutes),
        "s" => sprintf("%02d", (int)$seconds)
    );

答案 1 :(得分:0)

如果将转换删除为整数,sprintf函数将正确格式化数字:

$obj = array(
    "h" => (int) $hours,
    "m" => sprintf("%02d", $minutes),
    "s" => sprintf("%02d", $seconds)
);

在十进制表示中,整数不能以零开始(只有整数的十六进制,八进制和二进制表示可以以零开头)。