我将MP3的长度作为00:00:00
示例:01:23:15
格式的字符串存储在MYSQL中。
我正在尝试构建一种函数,以一种更加用户友好的方式对其进行格式化,以节省数小时,
分钟as the case may be and do not show leading zeros or
:`。
02:43:12
将变为2:45:12
(在这种情况下,小时中的前导零将被删除)
02:03:12
将变为2:03:12
(在这种情况下,由于存在小时,因此在视觉上需要分钟的前导零)
00:18:28
将变为18:28
(在这种情况下,小时数的前导零和:
被删除)
00:08:28
将变为8:28
(在这种情况下,由于没有小时,因此不需要分钟数的前导零)
00:00:14
将变成00:14
(在这种情况下,如果分钟为零,那么它仍应显示两个前导零,因此很明显,您只看到秒)
00:00:04
将变成00:04
(在这种情况下,分钟和秒的前导零都显示出来使其更具可读性)
答案 0 :(得分:2)
如果您不想做很多条件,也可以使用简单的str_replace()
并最终检查从02:43:12
中删除前导0来做到这一点
<?php
$tests = [
'12:43:23',
'02:43:12',
'02:03:12',
'00:18:28',
'00:08:28',
'00:00:14',
'00:00:04',
'00:00:00',
];
function mp3time($str) {
$str = str_replace(['00:0', '00:', '0:'], ['', '', '00:'], $str);
if (strlen($str) === 8 && $str[0] == 0) {
$str = substr($str, 1);
}
return $str;
}
foreach ($tests as $timestamp) {
echo mp3time($timestamp).PHP_EOL;
}
结果:
12:43:23
2:43:12
2:03:12
18:28
8:28
00:14
00:04
00:00
答案 1 :(得分:0)
@Larence Cherones解决方案对我有用,但我发现另外2个用例不正确。如果分钟为:00
或秒为:00
,则格式混乱。无法找到修改他的代码以适应这些情况的好方法,所以我想出了他的解决方案的这种混合形式。
function format_track_time($time) {
$a = substr($time, 0, 3); // hours
$b = substr($time, 3, 3); // minutes
$c = substr($time, 6, 2); // seconds
$a = str_replace(['00:'], [''], $a);
$time = $a . $b . $c;
// REMOVE LEADING ZERO FOR HOURS
if (strlen($time) == 8 && $time[0] == '0') {
$time = substr($time, 1);
}
// REMOVE LEADING ZERO FOR MINUTES IF NO HOURS
if (strlen($time) == 5 && $time[0] == '0') {
$time = substr($time, 1);
}
return $time;
}