2

私は iTunes ライブラリを使用して約 1,100 の mp3 からデータを取得していますが、ライブラリの再生時間を分と秒で取得する際に小さな問題が発生しています。

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

問題は、この特定の MP3 が実際には 31:42 であることです。これが機能しない理由について何か考えはありますか?

4

4 に答える 4

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

は 60 を法として分を取っています。トラックが 1 時間を超えない限り、常に 0 と表示されます。

$minutes = floor($duration / 60);
于 2011-02-02T19:45:40.913 に答える
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;
}
于 2011-02-02T19:50:22.510 に答える
1

この質問が書かれたときに次の機能が利用可能であったかどうかはわかりませんが、それは私が自問していた質問なので、ここに行きます。

上記の答えを使用しました:

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

これはほとんどの場合に機能しますが、パディングはありません。したがって、20:01 である必要があるときに 20:1 になる可能性があります。また、1 時間以上では不十分です。1 つの長さは length="1: 70:9" - 別の方法として、「日付」機能を使用します。

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

その秒数から00:31:42を返します

于 2012-03-23T15:02:59.340 に答える