繁体   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