我们有很多字符串用于存储参与者完成音轨所花费的时间。这些字符串基本上有两种不同类型(< 1小时和> 1小时):
54:37
01:12:20
在显示之前在PHP中格式化这些字符串的最合理方法是什么,以便它们保持相同的标准 - hh:mm:ss
(第一个字符串需要为00:54:37
)?
非常感谢任何帮助或guindace。
答案 0 :(得分:2)
简单的方法是
$time = strlen($time)==8?$time:"00:$time"
它的作用:用00:从左边填充字符串到8的完整长度
或print date('H:i:s',strtotime('54:37'))
它的作用:检查字符串是否为8个字符,然后不做任何其他操作添加00:
如果只给出了两种不同的类型,这就是解决方案。
这不起作用:<foreach item="item" index="index" collection="list">
${item}.{key}
</foreach>
答案 1 :(得分:1)
这个怎么样:
$str = '54:37';
echo str_pad($str, 8, '00:', STR_PAD_LEFT); // outputs 00:54:37
$str = '01:12:20';
echo str_pad($str, 8, '00:', STR_PAD_LEFT); // outputs 01:12:20
答案 2 :(得分:1)
如果字符串始终用:
分隔,则可以使用explode
将字符串拆分为数组,然后测试该数组是否包含两个或三个元素。
如果数组有两个元素,那么您可以使用array_unshift
将“00”添加到数组的开头。
之后,您可以使用implode
获取数组的字符串表示。
有些事情:
function formatTime ($string) {
$arr = explode(':', $string);
if (count($arr) === 2){
array_unshift($arr, "00");
}
return implode(':', $arr);
}
echo formatTime('54:37'); // returns 00:54:37
当然,你需要检查传入时间戳的有效性,以便它正确地将65:32转换为01:05:32。