转换MP3持续时间

时间:2011-02-02 19:41:03

标签: php math mp3 duration

我正在使用我的iTunes资料库从大约1,100个mp3中获取数据,而我在将图书馆的持续时间分为几分钟和几秒钟时遇到了一个小问题。

$duration = 1893642;
$minutes = bcmod(($duration / 60), 60);
$seconds = bcmod($duration, 60);
echo $minutes.":".$seconds; //returns 0:42

问题是这个特定的MP3实际上是31:42。有关为什么这不起作用的任何想法?

3 个答案:

答案 0 :(得分:5)

$minutes = bcmod(($duration / 60), 60);

以分钟为模60分钟。除非你的赛道超过一小时,否则总是会说0。 你希望它是

$minutes = floor($duration / 60);

答案 1 :(得分:2)

尝试此功能

function formatTime($secs) {
    $times = array(3600, 60, 1);
    $time = '';
    $tmp = '';
    for($i = 0; $i < 3; $i++) {
        $tmp = floor($secs / $times[$i]);
        if($tmp < 1) {
            $tmp = '00';
        }
        elseif($tmp < 10) {
            $tmp = '0' . $tmp;
        }
        $time .= $tmp;
        if($i < 2) {
            $time .= ':';
        }
        $secs = $secs % $times[$i];
    }
    return $time;
}

答案 2 :(得分:2)

在撰写这个问题时,不确定以下功能是否可用,但因为这是一个我一直在问自己的问题,所以在这里。

我使用了上面的答案:

$seconds = bcmod($row{'playtime_seconds'}, 60);
$minutes = floor($row{'playtime_seconds'} / 60);
$hours = floor($minutes / 60);

大部分时间都适用,但没有填充 - 所以当它应该是20:01时你最终会得到20:1 - 并且它不会超过一个小时 - 一个长度的长度= “1:70:9” - 所以另一种方法是使用“日期”功能。

<?=date("H:i:s", $duration); ?>

从该秒数返回 00:31:42