Calculate difference between 2 times in hours in PHP

后端 未结 7 697
無奈伤痛
無奈伤痛 2020-12-10 20:11

I have two times - For eg- the current time - 08:24 and date is 02/01/2013 in dd/mm/yyyy format and I have another time at 13:46 and date is 31/12/2012 . So, how can I cal

相关标签:
7条回答
  • 2020-12-10 20:18

    Another way is to use PHP's date-related classes. The example below uses DateTime::diff() to get a DateInterval object ($interval). It then uses the interval's properties to arrive at the total number of hours in the 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)
    
    0 讨论(0)
  • 2020-12-10 20:20

    I got a simple solution, Try this one -

    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;
        }
    
    0 讨论(0)
  • 2020-12-10 20:24

    If you have the dates as timestamps (use strtotime if needed), then just subtract them, optionally take the absolute value, then divide to 3600 (number of seconds in an hour). Easy ^_^

    0 讨论(0)
  • 2020-12-10 20:27

    Convert them both to timestamp values, and then subtract to get the difference in seconds.

    $ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24'));
    $ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46'));
    $diff = abs($ts1 - $ts2) / 3600;
    
    0 讨论(0)
  • 2020-12-10 20:30

    I found this is simplest way to find time difference, it always works for me

    $timestamp1 = strtotime(date('Y-m-d H:i'));
    $timestamp2 = strtotime("2020-04-05 18:00");
    
      $diff = abs($timestamp2 - $timestamp1)/(60*60);
    echo $diff;
    
    0 讨论(0)
  • 2020-12-10 20:34

    Just putting this here, for anyone who needs to find the difference between two dates/timestamps in Hours, Minutes 'AND' Seconds!!

    $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);
    
    0 讨论(0)
提交回复
热议问题