簡體   English   中英

PHP的date_diff小時

[英]php date_diff in hours

如何使下面的代碼轉換小時數?

$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函數。

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 :: format, 文檔說...

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

date_diff返回的DateInterval對象date_diff存儲每個時間段(秒,分鍾,小時,天,月和年)。

由於相差2天,因此hours屬性為0,這就是您得到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM