2011-02-02 104 views
2

我正在使用我的iTunes资料库从约1,100首mp3中获取数据,而且我正遇到将库的持续时间分为几分钟和几秒钟的小问题。转换MP3持续时间

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

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

回答

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

正在分钟模60.除非你的曲目是一个多小时,它会永远说0 你希望它是

$minutes = floor($duration/60); 
+0

返回○点31分42秒所以你说的我秒应该避免`bcmod()`呢?我不明白'bcmod()`做了什么,另一个stackoverflow的人告诉我这样做,因为大多数人看起来工作正常。 – Webnet 2011-02-02 21:49:26

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

不知道在写这个问题时下面的函数是否可用,但是因为这是一个我一直在问自己的问题所以在这里。

我用上面的答案:

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

这对于广大的时代的作品,但没有填充 - 这样你就可以用20结束:1时,它应该是20:01 - 和它不会超过一个小时 - 一个长度的长度=“1:70:9” - 所以另一种方法是使用“日期”功能。

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

从该秒数

相关问题