2012-03-16 49 views
3

我有两次像10:00 am7:00 pm如何从两次计算两小时?

而从这个我想获得总小时数。从那时起,我必须得到9个小时。

我该怎么做?

我与:爆炸,但随后它从10减去7,并返回结果3这是不正确,因为它应该返回9

回答

4
<?php echo strtotime('7:00 pm')-strtotime('10:00 am');?> 

获取时间戳差异

编辑

回波(的strtotime('07:00 ') - 的strtotime('10:00'))/(60 * 60); //显示9

60 * 60 = 1小时

编辑

$fromTime = '3:00 pm'; 
$toTime = '12:00 am'; 
$timediff = (strtotime($toTime)-strtotime($fromTime))/(60*60); 
echo $timediff >= 0 ? $timediff : (24 + $timediff); 
+0

但它返回它的时间戳。我想要9号。 – Ahmad 2012-03-16 06:27:46

+0

@Ahmad我已编辑答案 – 2012-03-16 06:36:01

+0

但下午3点--12点返回15.这是不正确的。 – Ahmad 2012-03-16 06:47:46

1

您可以使用PHP的strtotime功能将其转换为UNIX时间,所以你可以做进一步的计算用它。

1

我认为你可以得到的ampm信息保持!有了这些信息,你可以使if()更正确!

If()这是PM,增加12小时,如果不是下午,没有做任何事情。

与您对比的时间做到这一点:

if (pm==1){ 
time+=12; 
} 

所以10:00 am = false这将是10:00 和7:00 pm = true这将是19:00

19:00 - 10:00 = 9 hours = win

1

我觉得这会帮助你更有效地

<?php echo date('H:i:s',strtotime('7:00 pm')-strtotime('10:00 am'));?> 
+0

当我尝试从下午3:00到12:00计算时,它也返回15 – Ahmad 2012-03-16 07:22:11

+0

试试这个...... <?php echo date('h:i:s a',strtotime(' 3:00 pm') - strtotime('12:00 am'));?> – NarayaN 2012-03-16 07:29:18

+0

返回下午3:00:00 – Ahmad 2012-03-16 07:34:32

0

使用日期时间界面,其简单的

$day1= new DateTime("today 01:33:26am"); 
    $dayd2= new DateTime("today 10:40:36pm");   //Output: Hours: 21 
    $interval= $day1->diff($day2); 
    $h = ($interval->days * 24) + $interval->h; 
    echo "Hours: ".$h 

这里 H =小时数。 $ interval->天指多少天差得到,如果我们得到一(1)天那么它加1 * 24(小时)= 24 + 21 46例小时的,但这里DAY1和DAY2包含今天这样,那意味着0 * 24 = 0 + 21 = 21

最后输出:21小时的