2011-12-17 57 views
0

我在定義爲mediumint(11)的數據庫中有一個值。目前它返回3600如果我運行查詢。從數據庫轉換時間

這個函數在這裏應該將該值轉換爲:1小時。但是,當我運行該功能時不會。我沒有任何價值。

function strTime($s) { 
    $d = intval($s/86400); 
    $s -= $d*86400; 

    $h = intval($s/3600); 
    $s -= $h*3600; 

    $m = intval($s/60); 
    $s -= $m*60; 

    if ($d) $str = $d . 'd '; 
    if ($h) $str .= $h . 'h '; 
    if ($m) $str .= $m . 'm '; 
    if ($s) $str .= $s . 's'; 

    return $str; 
} 

很基本,必須是db中的值嗎?調用此(的Joomla特定)

代碼:

$query = "SELECT streaming_limit FROM #__cc_users WHERE user_id=".$user->id; 
$db->setQuery($query); 
$steaming_limit = $db->loadResult(); //returns 3600 
echo strTime($streaming_limit); //returns nothing 
+1

我有一種感覺,有一個問題,在某個地方,哪來的*問題*? – 2011-12-17 21:35:02

+0

那究竟是什麼問題?你目前的輸出是多少?換句話說:我們能在什麼時候幫助你? ;-) – 2011-12-17 21:36:40

+0

哎呀,添加了編輯。基本上這個函數不會像我期望的那樣返回1小時,而是會得到一個空值。 – Tom 2011-12-17 21:37:14

回答

1

執行此操作的更強大的方法是PHP的DateTimeDateInterval類,它們專門用於這類事情。 下面的代碼創建兩個DateTime對象,將指定的秒數 添加到一個對象,然後計算兩者之間的間隔。

在這一點上,你可以格式化時間差,但是你會喜歡用DateInterval::format

function strTimeDiff($seconds) 
{ 
    $date1 = new DateTime(); 
    $date2 = new DateTime(); 
    $date2->add(new DateInterval('PT'.$seconds.'S')); 
    $interval = $date1->diff($date2); 

    echo $interval->format('%d days, %h hours, %i minutes, %s seconds'); 
} 

$secs_from_db = 3600; 
echo strTimeDiff($secs_from_db); 
// 0 days, 1 hours, 0 minutes, 0 seconds 
+0

thx的細節 – Tom 2011-12-18 02:02:57

0

你可以嘗試使用這樣的事情:

「轉換的秒數含小時,分別分,秒的數組」

http://codeaid.net/php/convert-seconds-to-hours-minutes-and-seconds-%28php%29

<?php 

/** 
* Convert number of seconds into hours, minutes and seconds 
* and return an array containing those values 
* 
* @param integer $seconds Number of seconds to parse 
* @return array 
*/ 
function secondsToTime($seconds) 
{ 
    // extract hours 
    $hours = floor($seconds/(60 * 60)); 

    // extract minutes 
    $divisor_for_minutes = $seconds % (60 * 60); 
    $minutes = floor($divisor_for_minutes/60); 

    // extract the remaining seconds 
    $divisor_for_seconds = $divisor_for_minutes % 60; 
    $seconds = ceil($divisor_for_seconds); 

    // return the final array 
    $obj = array(
     "h" => (int) $hours, 
     "m" => (int) $minutes, 
     "s" => (int) $seconds, 
    ); 
    return $obj; 
} 
+0

這有完全相同的問題......所以這不會作爲解決方案。 – Tom 2011-12-18 01:19:53