Php sprintf什么都不做-尝试输出为两位数(前导零)
我有一个秒到时间的函数,我希望总是以两位数输出分和秒的值。换句话说,Php sprintf什么都不做-尝试输出为两位数(前导零),php,printf,Php,Printf,我有一个秒到时间的函数,我希望总是以两位数输出分和秒的值。换句话说,5将变成05。我在函数中使用了sprintf,但它没有做任何事情。值仍以单个数字返回 //convert seconds to time function convertSeconds($seconds) { // extract hours $hours = floor($seconds / (60 * 60)); // extract minutes $divisor_for_minutes
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;
}
如果将强制转换删除为整数,则
sprintf
函数将正确格式化数字:
$obj = array(
"h" => (int) $hours,
"m" => sprintf("%02d", $minutes),
"s" => sprintf("%02d", $seconds)
);
在十进制表示法中,整数不能以零开头(只有整数的十六进制、八进制和二进制表示法可以以零开头) 这是您正在转换的
sprint()
不是变量的问题,所以请尝试
$obj = array(
"h" => (int)$hours,
"m" => sprintf("%02d", (int)$minutes),
"s" => sprintf("%02d", (int)$seconds)
);
如果您想要以2位格式输出,则必须删除(int)
类型转换