我有来自数组的时间字符串,如果10以下的整数值没有,我想把前导零加起来。例如,我想要
this "8:10:12" to "08:10:12"
this "13:7:14" to "13:07:14"
this "13:25:6" to "13:25:06"
我可以选择一个非常混乱的代码,用":"等等进行拆分,但我想知道这是否可以用一行干净的代码来完成。如果这不能用单行完成,请回复。那我就去做那些乱七八糟的代码。
提前感谢。。!
您可以将php日期函数date
与strtotime
一起使用
$str = "8:10:12";
$new_str = date("H:i:s",strtotime($str));
echo $new_str;
演示
您可以使用explode
、array_map
、sprintf
和implode
使其成为一行,但它并不漂亮。
$time = implode(':', array_map(function($num) { return sprintf("%02d", $num); }, explode(':', $time)));
有关用前导零格式化数字的其他方法,请参阅在PHP中格式化用前导零的数字。
由于这是一种非标准时间格式,您必须手动解析它:
<?php
$data = ["8:10:12", "13:7:14", "13:25:6"];
array_walk($data, function(&$time) {
preg_match('|^(d+):(d+):(d+)$|', $time, $token);
$time = (new DateTime())->setTime($token[1], $token[2], $token[3])->format("H:i:s");
});
print_r($data);
输出显然是:
Array
(
[0] => 08:10:12
[1] => 13:07:14
[2] => 13:25:06
)