Answers:
sprintf('%+03d:00 UTC',$i)
这里$i
是-12至12日,将打印+或-根据需要,同时还将把前导零数少于2个位数。非常适合SELECT
在HTML中创建时区。
当我需要01而不是1时,以下内容对我有用:
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
sprintf
是您所需要的。
在上面链接的页面中,编辑(按downvotes的要求),这是一个示例“零填充整数”:
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
如果输入数字始终为7或8位数字,则也可以使用
$str = ($input < 10000000) ? 0 . $input : $input;
我进行了一些测试,得出的结果是速度是str_pad
或的两倍sprintf
。
如果输入可以有任何长度,那么您也可以使用
$str = substr('00000000' . $input, -8);
这不如另一个快,但也应该比str_pad
和快一点sprintf
。
顺便说一句:我的测试还说,sprintf
它比快一点str_pad
。我使用PHP 5.6进行了所有测试。
编辑:虽然该substr
版本似乎仍然非常快(PHP 7.2),但如果您的输入可能比您要填充的长度更长,它也会被破坏。例如,您想填充到3位数字,而您的输入有4个比,substr('0000' . '1234', -3) = '234'
只会导致最后3个数字
$
我刚刚解决了)
我写了这个简单的函数来产生这种格式:01:00:03
始终显示秒(即使为零)。如果大于零或需要小时或天,则显示分钟。如果大于零或需要天数,则显示小时数。如果大于零,则显示天数。
function formatSeconds($secs) {
$result = '';
$seconds = intval($secs) % 60;
$minutes = (intval($secs) / 60) % 60;
$hours = (intval($secs) / 3600) % 24;
$days = intval(intval($secs) / (3600*24));
if ($days > 0) {
$result = str_pad($days, 2, '0', STR_PAD_LEFT) . ':';
}
if(($hours > 0) || ($result!="")) {
$result .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
}
if (($minutes > 0) || ($result!="")) {
$result .= str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
}
//seconds aways shown
$result .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $result;
} //funct
例子:
echo formatSeconds(15); //15
echo formatSeconds(100); //01:40
echo formatSeconds(10800); //03:00:00 (mins shown even if zero)
echo formatSeconds(10000000); //115:17:46:40
function duration($time){
$hours = '';
$minutes = '00:';
$seconds = '00';
if($time >= 3600){
//0 - ~ hours
$hours = floor($time / 3600);
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 3600;
}
if($time >= 60){
//0 - 60 minute
$minutes = floor($time / 60);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 60;
}
if($time){
//0 - 60 second
$seconds = str_pad($time, 2, '0', STR_PAD_LEFT);
}
return $hours . $minutes . $seconds;
}
echo duration(59); // 00:59
echo duration(590); // 09:50
echo duration(5900); // 01:38:20