用PHP计算两次之间的差异(以小时为单位)

用PHP计算两次之间的差异(以小时为单位),php,datetime,time,date-arithmetic,Php,Datetime,Time,Date Arithmetic,我有两次- 例如,当前时间为08:24,日期为2013年1月2日,格式为dd/mm/yyyy 我还有一个时间是13:46,日期是2012年12月31日。那么,我如何使用PHP计算这两次的时间差呢。(即42时63分) 提前感谢。如果您将日期作为时间戳(如果需要,请使用),则只需将其减去,或者取绝对值,然后除以3600(一小时内的秒数)。轻松^ ^ ^将两者转换为时间戳值,然后减去以秒为单位的差值 $ts1 = strtotime(str_replace('/', '-', '02/01/2013

我有两次- 例如,当前时间为08:24,日期为2013年1月2日,格式为dd/mm/yyyy 我还有一个时间是13:46,日期是2012年12月31日。那么,我如何使用PHP计算这两次的时间差呢。(即42时63分)
提前感谢。

如果您将日期作为时间戳(如果需要,请使用),则只需将其减去,或者取绝对值,然后除以3600(一小时内的秒数)。轻松^ ^ ^

将两者转换为时间戳值,然后减去以秒为单位的差值

$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24'));
$ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46'));
$diff = abs($ts1 - $ts2) / 3600;

另一种方法是使用PHP的日期相关类。下面的示例用于获取对象(
$interval
)。然后,它使用间隔的属性得出间隔中的总小时数

$a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013');
$b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012');

$interval = $a->diff($b);
$hours    = ($interval->days * 24) + $interval->h
          + ($interval->i / 60) + ($interval->s / 3600);

var_dump($hours); // float(42.633333333333)

我有一个简单的解决方案,试试这个-

echo getTimeDiff("10:30","11:10");

function getTimeDiff($dtime,$atime)
    {
        $nextDay = $dtime>$atime?1:0;
        $dep = explode(':',$dtime);
        $arr = explode(':',$atime);
        $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y')));
        $hours = floor($diff/(60*60));
        $mins = floor(($diff-($hours*60*60))/(60));
        $secs = floor(($diff-(($hours*60*60)+($mins*60))));
        if(strlen($hours)<2){$hours="0".$hours;}
        if(strlen($mins)<2){$mins="0".$mins;}
        if(strlen($secs)<2){$secs="0".$secs;}
        return $hours.':'.$mins.':'.$secs;
    }
echo getTimeDiff(“10:30”、“11:10”); 函数getTimeDiff($dtime,$atime) { $nextDay=$dtime>$atime?1:0; $dep=分解(“:”,$dtime); $arr=爆炸(“:”,$atime); $diff=abs(mktime($dep[0]、$dep[1]、0、日期('n')、日期('j')、日期('y'))-mktime($arr[0]、$arr[1]、0、日期('n')、日期('j')+$nextDay、日期('y')); $hours=楼层($diff/(60*60)); $mins=楼层($diff-($hours*60*60))/(60)); $secs=楼层($diff-($hours*60*60)+($mins*60));
if(strlen($hours)我认为下面的代码有助于了解如何使用PHP计算时差

function date_diff($date_1 , $date_2 , $format) {
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $diff = date_diff($datetime1, $datetime2);

    return $diff->format($format);
}
上述函数用于计算两个时间之间的差值以及日期。日期作为输出格式的参数给出

输出格式如下所示:

//“%y年%m月%d天%h小时%i分钟%s秒”=>1年3月14天11小时49分36秒 //“%y年%m月%d天”=>1年3月14天 //“%m个月%d天”=>3个月14天 //“%d天%h小时”=>14天11小时 //“%d天”=>14天 //“%h小时%i分钟%s秒”=>11小时49分36秒 //“%i分%s秒”=>49分36秒 //'%h小时=>11小时
//“%a Days

只要把它放在这里,对于需要在
小时
分钟
中找到两个日期/时间戳之间的差异的任何人

$futureDate_raw = '12/13/2018'; // This is your finish date.
$fdate = strtotime($futureDate_raw);

$hours   = (($fdate - time()) / 3600;
$mins    = (($fdate - time()) % 3600) / 60;
$seconds = ((($fdate- time()) % 3600) % 60);

我发现这是找到时差的最简单的方法,它对我来说总是有效的

$timestamp1 = strtotime(date('Y-m-d H:i'));
$timestamp2 = strtotime("2020-04-05 18:00");

  $diff = abs($timestamp2 - $timestamp1)/(60*60);
echo $diff;

编辑:strotime解析为m/d/y或d-m-y,因此转换为-在分析之前,它给出差异,但它不给出差异是正的还是负的。如果需要保留差异的符号,您可以删除abs()调用。
($ts1-$ts2)/3600
是的,这是我的错,我没有注意到你要找的术语是“日期算术”。