Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php日期差异(以小时为单位)_Php_Datetime_Date - Fatal编程技术网

php日期差异(以小时为单位)

php日期差异(以小时为单位),php,datetime,date,Php,Datetime,Date,如何使下面的代码以小时为单位转换天 $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_a

如何使下面的代码以小时为单位转换天

$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 />";
$timestart=date\u create('02/11/2011'.$row->timestart)//$行->timestart以00:00:00格式返回时间
$timestop=date\u create('02/11/2011'.$row->timestop)//$行->timestop以00:00:00格式返回时间
日期添加($timestop,date\u interval\u create\u from\u date\u string('2天'))//加2天
$date\u diff=date\u diff($timestart,$timestop);
回声“时间跨度:”;
echo$date_diff->格式(“%h小时”);
回声“
”;
我如何获得已用时间的
hours:minutes:seconds
?我试图继续使用
date\u diff
函数。

date\u diff()的结果是类的对象。这样的对象有一个非常有用的属性-
$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()的结果是类的对象。这样的对象有一个非常有用的属性-
$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()方法不重新计算结转 时间字符串或日期段中的点


DateInterval
对象,由
date\u diff
返回,分别存储每个时间段、秒、分钟、小时、天、月和年


由于差异为2天,所以hours属性为0,这就是您得到的。

date\u diff
返回的
DateInterval
对象分别存储每个时间段、秒、分钟、小时、天、月和年


由于差异为2天,小时属性为0,这就是您得到的。

您应该使用对象样式
DateTime
@Truth,过程样式有什么问题?它似乎给出了相同的结果。它确实给出了相同的结果,只是处理DateTime对象比处理过程函数容易得多。如果$date\u diff->format('H:i:s')不起作用,您可能会遇到某种输入格式问题,无法正确地将其转换回。例如,确保前两行中的日期和timestart/timestop变量之间有空格。您应该使用对象样式
DateTime
@Truth,过程样式有什么问题?它似乎给出了相同的结果。它确实给出了相同的结果,只是处理DateTime对象比处理过程函数容易得多。如果$date\u diff->format('H:i:s')不起作用,您可能会遇到某种输入格式问题,无法正确地将其转换回。例如,确保日期和前两行中的timestart/timestop变量之间有空格