在PHP中计算2次之间的时间差

o0lyfsai  于 2023-01-19  发布在  PHP
关注(0)|答案(8)|浏览(149)

我有两个时间-例如-当前时间- 08:24和日期是02/01/2013在dd/mm/yyyy格式,我有另一个时间在13:46和日期是31/12/2012 .那么,我怎么才能计算两个时间之间的差异,在小时使用PHP.(即42.63小时)提前感谢.

uqjltbpv

uqjltbpv1#

将它们都转换为时间戳值,然后相减以获得以秒为单位的差值。

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

vptzau2j2#

另一种方法是使用PHP的日期相关类。下面的示例使用DateTime::diff()来获取DateInterval对象($interval)。然后使用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)
gj3fmq9x

gj3fmq9x3#

我有个简单的办法,试试这个-

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;
    }
kgsdhlau

kgsdhlau4#

如果你有日期作为时间戳(如果需要,使用strtotime),然后减去它们,也可以取绝对值,然后除以3600(一小时的秒数)。

sgtfey8w

sgtfey8w5#

我认为下面的代码对于了解如何使用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天

wfsdck30

wfsdck306#

只是把这个放在这里,对于任何人谁需要找到两个日期/时间戳之间的差异在HoursMinutes '' 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);
2ekbmq32

2ekbmq327#

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

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

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

gcxthw6b8#

以下代码可用于获取格式为H:I:S的时差:

    • 方法一:**
function time_diff($startDateTime, $endDateTime) {
    $startDateTime = strtotime(str_replace('/', '-', $startDateTime));
    $endDateTime = strtotime(str_replace('/', '-', $endDateTime));
    $difference = abs($startDateTime - $endDateTime);
    $hours = floor($difference / 3600);
    $minutes = floor(($difference % 3600) / 60);
    $seconds = $difference % 60;

    return str_pad($hours, 2, '0', STR_PAD_LEFT). ":" . str_pad($minutes, 2, '0', STR_PAD_LEFT). ":" . str_pad($seconds, 2, '0', STR_PAD_LEFT);
}
    • 方法二:**
function time_diff($startDateTime, $endDateTime) {
    $datetime1 = new DateTime($startDateTime);
    $datetime2 = new DateTime($endDateTime);
    $interval = $datetime1->diff($datetime2);

    return $interval->format('%H:%I:%S');
}

谢谢你!

相关问题