如何格式化HH:MM:SS时间,如果小时、分钟、秒没有前导零php



我有来自数组的时间字符串,如果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日期函数datestrtotime一起使用

$str = "8:10:12";
$new_str = date("H:i:s",strtotime($str));
echo $new_str;

演示

您可以使用explodearray_mapsprintfimplode使其成为一行,但它并不漂亮。

$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
)

最新更新