如何计算PHP的时差?

时间:2010-05-27 10:37:14

标签: php date

我必须计算日期时差,在PHP中如何做到这一点?我需要精确的小时,​​分​​钟和秒。有人有脚本吗?

7 个答案:

答案 0 :(得分:24)

使用PHP的diff() method DateTime class,如下所示: -

$lastWeek = new DateTime('last thursday');
$now = new DateTime();
var_dump($now->diff($lastWeek, true));

这会给你一个DateInterval对象: -

object(DateInterval)[48]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 2
  public 'h' => int 11
  public 'i' => int 34
  public 's' => int 41
  public 'invert' => int 0
  public 'days' => int 2

从中检索您想要的值是微不足道的。

答案 1 :(得分:8)

检查一下..这应该有效

<?php

function timeDiff($firstTime,$lastTime)
{

// convert to unix timestamps
$firstTime=strtotime($firstTime);
$lastTime=strtotime($lastTime);

// perform subtraction to get the difference (in seconds) between times
$timeDiff=$lastTime-$firstTime;

// return the difference
return $timeDiff;
}

//Usage :
echo timeDiff("2002-04-16 10:00:00","2002-03-16 18:56:32");

?> 

答案 2 :(得分:7)

这应该可行,只需将时间差异中的时间替换为任务开始的时间和当前时间或任务结束的时间。对于连续计数器,开始时间将存储在数据库中,或者任务的已用时间也将存储在结束时间

function timeDiff($firstTime,$lastTime){
   // convert to unix timestamps
   $firstTime=strtotime($firstTime);
   $lastTime=strtotime($lastTime);

   // perform subtraction to get the difference (in seconds) between times
   $timeDiff=$lastTime-$firstTime;

   // return the difference
   return $timeDiff;
}

//Usage :
$difference = timeDiff("2002-03-16 10:00:00",date("Y-m-d H:i:s"));
$years = abs(floor($difference / 31536000));
$days = abs(floor(($difference-($years * 31536000))/86400));
$hours = abs(floor(($difference-($years * 31536000)-($days * 86400))/3600));
$mins = abs(floor(($difference-($years * 31536000)-($days * 86400)-($hours * 3600))/60));#floor($difference / 60);
echo "<p>Time Passed: " . $years . " Years, " . $days . " Days, " . $hours . " Hours, " . $mins . " Minutes.</p>";

答案 3 :(得分:1)

对于类似的东西,使用built int time()函数。

  • 存储time();之类的值1274467343 这是scince的秒数
  • 何时需要追溯价值 并将其分配给$erlierTime
  • 再次为后者分配time() 停止你想要的时间,让我们 称之为$latterTime

所以现在你有$erlierTime$latterTime

不只是$latterTime - $erlierTime能够在几秒钟内获得差异,然后你的分数会经过几分钟的麻木,过了几个小时等等。


为了让我或任何人给你一个完整的脚本,你需要告诉我们你的环境是什么样的,你在使用mysql,sqlite等...也需要知道如何触发该计时器

答案 4 :(得分:0)

datediff 上的 addedbytes.com 功能可让您轻松实现:)

答案 5 :(得分:0)

最好的解决方案是使用自定义代码,php中有许多内置函数可以让你轻松完成。 Datestrtotimetime

  1. 首先使用strtotime函数将您的日期从“Y-m-d H:i:s”格式转换为Linux时间戳。
  2. 进行计算并使用time获取当前时间戳(如果适用)。
  3. 使用date函数将计算出的时间戳转换为日期。

答案 6 :(得分:0)

您必须将开始日期时间和结束时间转换为strtotime。

之后减去结束时间的开始时间。

之后传递您所需的日期差异或时间格式...

所以你会得到两个日期之间的确切差异。