使用php获取两个日期之间的总时差

使用php获取两个日期之间的总时差,php,Php,可能重复: 在这里我提到了两次它的日期 2008-12-13 10:42:00 2010-10-20 08:10:00 我想得到(h:m:s)格式的总时差您可以使用将时间转换为整数并减去它们 $time1 = strtotime("2008-12-13 10:42:00"); $time2 = strtotime("2010-10-20 08:10:00"); $diff = $time2-$time1; // the difference in int. then you can divi

可能重复:

在这里我提到了两次它的日期

2008-12-13 10:42:00

2010-10-20 08:10:00

我想得到(h:m:s)格式的总时差

您可以使用将时间转换为整数并减去它们

$time1 = strtotime("2008-12-13 10:42:00");
$time2 = strtotime("2010-10-20 08:10:00");

$diff = $time2-$time1;
// the difference in int. then you can divide by 60,60,24 and 
// so on to get the h:m:s out of it

如果您正在使用或能够使用PHP 5.3.x或更高版本,则可以使用其DateTime对象功能:

$date_a = new DateTime('2010-10-20 08:10:00');
$date_b = new DateTime('2008-12-13 10:42:00');

$interval = date_diff($date_a,$date_b);

echo $interval->format('%h:%i:%s');
您可以以多种方式使用该格式,并且一旦在DateTime对象中有了日期,就可以利用许多不同的功能,例如通过普通运算符进行比较。有关更多信息,请参阅手册:

我在使用什么:

$seconds = strtotime("2010-10-20 08:10:00") - strtotime("2008-12-13 10:42:00");

$days    = floor($seconds / 86400);
$hours   = floor(($seconds - ($days * 86400)) / 3600);
$minutes = floor(($seconds - ($days * 86400) - ($hours * 3600))/60);
$seconds = floor(($seconds - ($days * 86400) - ($hours * 3600) - ($minutes*60)));

您现在可以按自己的方式设置格式

查看此问题:只需检查问题@tarion linked,并使用Datetime的diff:-1使用投票最多(而不是被接受)的答案。如果你在谷歌上搜索“两个日期之间的php差异”,Tarion链接的确切副本是第一个结果。这不是链接问题的副本,事实上我发现这个答案更有用…我们可以从这个问题中删除副本吗?感谢大家宝贵的重播。借助上述代码的帮助,我得到了答案$seconds=strotime(“2000-03-01 10:02:00”)-strotime(“2000-02-28 10:02:00”)$天数=最低限额(秒/86400美元)$小时=楼层($秒-($天*86400))/3600)$分钟=楼层($秒-($天*86400)-($小时*3600))/60)$秒=地板($seconds-$days*86400)-($hours*3600)-($minutes*60))$ff=$天*24;echo$time=$ff+$hours.“hours”。$minutes.“minutes”。$seconds.“seconds”;“地板($seconds/86400);”将在“夏季”日期失效,除非日期中特别添加了时间。否则会有1个小时的休息时间,找到的日期数量会少1天(因为时间短了1个小时)。使用DateTime和date_diff代替谢谢大家宝贵的重播。实际上,上面是PHP5.3.x或更高版本。你是对的,我认为这是一个(非常古老的)打字错误。更新,谢谢!它只给出了区别,如果我想知道diff是正的还是负的,您可以使用“%R”格式字符串来表示它是正的还是负的间隔;有关格式选项的完整列表,请参阅。谢谢大家宝贵的重播