2012-06-16 28 views
0

如何將代碼轉換成以小時爲單位的天數?php date_diff以小時爲單位

$timestart = date_create('02/11/2011' . $row->timestart); //$row->timestart returns time in 00:00:00 format 
$timestop = date_create('02/11/2011' . $row->timestop); //$row->timestop returns time in 00:00:00 format 

date_add($timestop, date_interval_create_from_date_string('2 days')); //add 2 days 

$date_diff = date_diff($timestart, $timestop); 

echo "Timespan: "; 
echo $date_diff->format('%h hours'); 
echo "<br />"; 

我怎樣才能得到hours:minutes:seconds已過?我正在嘗試使用date_diff函數。

+0

您應該使用'DateTime'的對象樣式。 –

+0

@Truth,程序風格有什麼問題?它似乎給出了相同的結果。 – CyberJunkie

+0

它確實給出了相同的結果,使用DateTime對象比使用過程函數更容易。它也[看起來更好](https://gist.github.com/2942405) –

回答

5

date_diff()的結果是DateInterval類的對象。這樣的對象有一個非常有用的屬性 - $days:它是開始和結束日期之間的總天數。此外,它存儲(作爲其公共屬性)小時,分鐘和秒的差異。

所以,我想,你需要的只是從$ date_diff變量中提取這些屬性的值,然後將24*$days添加到小時數中。 )這一切都可以被包裝成一個簡單的函數:

function hms_date_diff(DateInterval $date_diff) { 
    $total_days = $date_diff->days; 
    $hours  = $date_diff->h; 
    if ($total_days !== FALSE) { 
    $hours += 24 * $total_days; 
    } 
    $minutes = $date_diff->i; 
    $seconds = $date_diff->s; 
    return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); 
} 

至於則DateDiff ::格式的doc說...

的DateInterval :: format()方法不會重新結轉 時間點字符串或日期段。

1

DateInterval對象,通過date_diff店時間分開,秒,分鐘,小時,天,月,年各期退還。

由於差值爲2天,因此您得到的小時數屬性爲0。

相關問題