如何通过计时获得两个日期之间的差异

时间:2017-01-10 18:54:21

标签: php datetime

我有两个格式为Y-m-d

的日期
$dateOld = new DateTime("2017-01-10");
$dateNew = new DateTime("2017-01-11");

echo $diff = $dateNew->diff($dateOld)->format("%a");

这是完美的工作,并给我精确的日子。

但现在我添加了time,它是H-M格式

23:3817:21相似,现在无法理解,以区分两个dateTime

$dateOld = new DateTime("2017-01-10 23:38");
$dateNew = new DateTime("2017-01-11 17:21");

echo $diff = $dateNew->diff($dateOld)->format("%a");

即使值为浮点数,我也希望得到差异。现在使用与时间连接的日期?

2 个答案:

答案 0 :(得分:1)

使用此:

<?php
$dateOld = new DateTime("2017-01-10 23:38");
$dateNew = new DateTime("2017-01-11 17:21");

$diff = $dateNew->diff($dateOld);
$days = $diff->d;
$hours = $diff->h;
$minutes = $diff->i;

$total_difference = $days + ($hours * 60 + $minutes) / 1440;

echo $total_difference;

或者,没有DateInterval:

$dateOld = new DateTime("2017-01-10 23:38");
$dateNew = new DateTime("2017-01-12 17:21");

$difference_in_seconds = $dateNew->getTimestamp() - $dateOld->getTimestamp();

$total_difference_in_days = $difference_in_seconds / 86400;

echo $total_difference_in_days;

使用 - &gt;格式(&#34;%a&#34;)会为您提供舍入天。

请参阅http://php.net/manual/en/datetime.diff.php

答案 1 :(得分:0)

$dateNew = '2017-01-11 17:21'; 
$dateOld = '2017-01-10 23:38'; 


$dateNew = new DateTime($dateNew); 
$dateOld   = new DateTime($dateOld); 

$diff  = $dateNew->diff($dateOld); 

echo $diff->format("%H:%I");

来源:http://php.net/manual/en/datetime.diff.php