PHP中的TIMEDIFF()函数?

PHP中的TIMEDIFF()函数?,php,sql,datetime,time,Php,Sql,Datetime,Time,是否有任何PHP函数执行与SQL函数TIMEDIFF()相同的操作 这是我的密码: $to_time = array_search( 'time2.Time', $aCols ); $from_time = array_search( 'time1.Time', $aCols ); $value= ; 我需要以这种格式获取值HH:MM:SS 我使用这个版本:PHP5.2.17 $dattTime = new DateTime(); $dateTime2 = new DateTime("20

是否有任何PHP函数执行与SQL函数TIMEDIFF()相同的操作

这是我的密码:

$to_time = array_search( 'time2.Time', $aCols );
$from_time = array_search( 'time1.Time', $aCols );
$value= ;  
我需要以这种格式获取值
HH:MM:SS

我使用这个版本:PHP5.2.17

$dattTime = new DateTime();
$dateTime2 = new DateTime("2012-09-11 10:25:00");


$interval = $dattTime->diff($dateTime2);
var_dump($interval->format('%H:%i:%s'));



$hours = $interval->h + ($interval->d*24);
var_dump("Total Hours: " . $hours . " hrs");  
输出

string '08:17:15' (length=8)
string 'Total Hours: 608 hrs' (length=20)
你可以试试

$dattTime = new DateTime();
$dateTime2 = new DateTime("2012-09-11 10:25:00");


$interval = $dattTime->diff($dateTime2);
var_dump($interval->format('%H:%i:%s'));



$hours = $interval->h + ($interval->d*24);
var_dump("Total Hours: " . $hours . " hrs");  
输出

string '08:17:15' (length=8)
string 'Total Hours: 608 hrs' (length=20)

如果需要,请使用
strotime()
将值转换为时间戳(理想情况下,它们应该已经存在),然后将二者分为几部分。

如果需要,请使用
strotime()
将值转换为时间戳(理想情况下,它们应该已经存在)然后只需将这两个部分分为两个子部分。

如果使用PHP5.3或之后,可以使用以下代码

$to_time = new DateTime(array_search( 'time2.Time', $aCols ));
$from_time = new DateTime(array_search( 'time1.Time', $aCols ));
$interval = $date1->diff($date2);
$value = $interval->format('%H:%i:%s');
或在5.3之前尝试以下操作:

$date1 = strtotime("2012-09-13 12:14:24.453");
$date2 = strtotime("2012-09-15 14:21:28.453");
$interval = $date2 - $date1;
$seconds = $interval % 60;
$minutes = floor(($interval % 3600) / 60);
$hours = floor($interval / 3600);
echo $hours.":".$minutes.":".$seconds;

如果使用PHP5.3或之后,可以使用以下代码

$to_time = new DateTime(array_search( 'time2.Time', $aCols ));
$from_time = new DateTime(array_search( 'time1.Time', $aCols ));
$interval = $date1->diff($date2);
$value = $interval->format('%H:%i:%s');
或在5.3之前尝试以下操作:

$date1 = strtotime("2012-09-13 12:14:24.453");
$date2 = strtotime("2012-09-15 14:21:28.453");
$interval = $date2 - $date1;
$seconds = $interval % 60;
$minutes = floor(($interval % 3600) / 60);
$hours = floor($interval / 3600);
echo $hours.":".$minutes.":".$seconds;

以“H:i:s”格式获取您的时间,将开始日期保留为00:00:00这很容易

以“H:i:s”格式获取您的时间,将开始日期保留为00:00:00这很容易



中的
$to\u time
$from\u time
是什么格式?它们是这种格式的
'2012-09-13 12:15:07.562'
中的
$to\u time
$from\u time
是什么格式的?它们是这种格式的
'2012-09-13 12:15:07.562'
@denonth我只是把时间延迟了一下,以便你能看到它们之间的区别。。我可以用更好的例子进行更新这是一个非常好的例子,但我需要用
PHP5.2.17
@denon实现这一点,我只是延迟了时间,以便您可以看到差异。。我可以用更好的示例进行更新这是一个非常好的示例,但我需要用
PHP5.2.17
$timesincedidnight=time()-strotime(“midnight”)
$timesincedidnight=time()-strotime(“午夜”)这对我不起作用。。。因为我只得到所有记录的
07:00:00
值,这是不正确的。如何做到这一点?我知道你的例子是有效的,但我不知道我应该做什么,差异大于24小时。在这种情况下,当我尝试此
“y:m:d h:I:s”时,您必须将日/月/年添加到$value中。我得到的值是:
69:12:31 07:00:00
time2=2012-09-13 12:21:21.406
time1=2012-09-13 12:14:24.453
这真奇怪,我得到的是
0:0
输出,没有任何东西。我有你所有的东西。也许问题出在格式上?时间在表中被保存为varchar?这对我不起作用。。。因为我只得到所有记录的
07:00:00
值,这是不正确的。如何做到这一点?我知道你的例子是有效的,但我不知道我应该做什么,差异大于24小时。在这种情况下,当我尝试此
“y:m:d h:I:s”时,您必须将日/月/年添加到$value中。我得到的值是:
69:12:31 07:00:00
time2=2012-09-13 12:21:21.406
time1=2012-09-13 12:14:24.453
这真奇怪,我得到的是
0:0
输出,没有任何东西。我有你所有的东西。也许问题出在格式上?时间是否保存为表中的varchar?