PHP将特定字符串转换为格式良好的时间字符串

时间:2016-07-21 15:42:17

标签: php time

我们有很多字符串用于存储参与者完成音轨所花费的时间。这些字符串基本上有两种不同类型(< 1小时和> 1小时):

54:37
01:12:20

在显示之前在PHP中格式化这些字符串的最合理方法是什么,以便它们保持相同的标准 - hh:mm:ss(第一个字符串需要为00:54:37)?

非常感谢任何帮助或guindace。

3 个答案:

答案 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。