2011-07-29 82 views
0

第一個問題在這裏,所以請原諒我,如果這似乎很明顯。我在使用MySQL數據庫中的'TIME'數據類型時遇到了一些問題,並試圖找到從時間戳開始處修剪前導零的最佳方法。使用PHP修剪/正確顯示時間MySQL數據類型

更具體地說,我在我的數據庫中有一張歌曲表,並且在那張表中我有一個song_length列。此列使用時間數據類型,因此演示文稿始終爲hh:mm:ss。

如果我的歌只有3分42秒(例如),我希望將它顯示爲:3:42,而不是00:03:42。有沒有內置的PHP函數(可能類似於date())來處理這樣的事情?

回答

0

把它分解成數組,然後抹上每一部分爲int

$time = '00:03:42'; 
$parts = explode(':', $time); 
$hours = (int) $parts[0]; 
$minutes = (int) $parts[1]; 
$seconds = (int) $parts[2]; 

如果我是你,雖然,我的時間存儲爲代表的秒數的整數。

+0

感謝您給我們!除了顯而易見的(能夠輕鬆地進行數學計算來確定分鐘數/小時數),將時間存儲爲Int數據類型而非Time數據類型還有什麼其他重大好處? – stealthify

+0

如果你想按時間列進行排序,可能會更容易一些(我不知道MySQL是否可以排序TIME列)。此外,如果你想 - 說 - 獲取特定藝術家的平均歌曲長度。 –

1

date()你只需要確保您使用的是不同的格式時$hours > 0

$d = new DateTime($time); 
echo $d->format('H') > 0 
    ? ltrim($d->format('H:i:s'), '0') 
    : ltrim($d->format('i:s'), '0'); 

http://ideone.com/eAWun

+0

謝謝你的迅速幫助,國王。這正是我所期待的(如果我決定繼續將時間保持爲Time數據類型而不是Int)。再次感謝! – stealthify

+0

+1,因爲在TIME字段的情況下,它可能是更好的解決方案! –