2011-06-06 91 views
0

可能重复:
Get time difference获取时间差

嗨,我需要得到两个时间在PHP之间的时间差。

$starttime=time(); 
$endtime=time(); 

如何获取小时,分钟和秒在PHP

感谢

+0

Fyi,如果是用于分析:使用'microtime(true)'而不是'time()' – ThiefMaster 2011-06-06 09:26:42

回答

3
echo ($endtime-$starttime); 

会得到你的秒数。

如果您需要了解小时就可以这样做:

$seconds = ($endtime-$starttime); 
echo floor($seconds/3600).' hours'; 
+2

'$ starttime = 10000; $ endtime = 11801;'=>'1801秒= 1小时'。你必须使用'floor()'。 – KingCrunch 2011-06-06 09:33:32

+0

@king:修正+1 .... – dynamic 2011-06-06 09:34:06

0

看一看的strftime

$difference = $endtime-$starttime; 
echo strftime('%H:%M:%S',$difference); 
+0

手册页:http://uk2.php.net/manual/en/function.strftime.php 虽然这会导致时区出现问题,基本上,您在UNIX纪元之后花费几小时,几分钟和几秒钟的时间戳。例如,当时区在BST上时,使用'1'的时间戳(这种情况下的差异)给出结果'01:00:01',这显然是错误的。将'date.timezone'设置为'America/Denver'(作为例子),现在'1:'的时间戳为'17:00:01'。 – Aether 2011-06-06 09:45:49

2
$starttime=time(); 
$endtime=time(); 

$diff = $endtime - $starttime; 
$hours = floor($diff/3600); 
$minutes = floor (($diff % 3600)/60); 
$seconds = $diff % 60; 
0

借用的代码here

<?php 
    $s0 = mktime(1, 2, 3); 
    $s1 = mktime(4, 5, 6); 
    $d0 = $s1 - $s0; 
    $dh = floor($d0/60/60); 
    $dm = $d0 - $dh * 60 * 60; $dm = floor($dm/60); 
    $ds = $d0 - $dh * 60 * 60 - $dm * 60; 
    echo sprintf(" 
     Start Time..: %s<br /> 
     End Time....: %s<br /> 
     Time to go..: %d hours, %d minutes, %d seconds 
     ", 
     date("Y-m-d h:i:s A", $s0), 
     date("Y-m-d h:i:s A", $s1), 
     $dh, 
     $dm, 
     $ds 
    ); 
?>