首先,我很抱歉我的英语。我来自德国。
现在我的问题: 我有一个多个数组,其中包含一些日期。我必须过滤每个IP的第一个和最后一个日期,因为我需要两个日期的差异来知道用户在我的网站上有多少时间。 我做到了,得到了我所需要的一切。这是我的代码输出的一部分:
$ ip_with_dates:
Array
(
[0] => Array
(
[ip] => 72.xx.xx.xx
[first_date] => 2015-10-12 00:10:15
[last_date] => 2015-10-12 01:10:51
)
[1] => Array
(
[ip] => 85.xx.xx.xx
[first_date] => 2015-10-12 00:10:19
[last_date] => 2015-10-12 01:10:56
)
我试图在这两个日期之间得到时间:
$visit_lenght = [];
foreach($ip_with_date as $key => $val){
$date1 = new DateTime($val['first_date']);
$date2 = new DateTime($val['last_date']);
$interval = $date1->diff($date2)->format('%h %m %s');
$visit_lenght[] = $interval;
}
是什么给了我这个输出:
Array
(
[0] => 1 36
[1] => 1 37
[2] => 0 3
[3] => 0 9
)
很好,但这并不适合工作。我需要几秒钟的时间而不是H:m:s
但我现在真的不怎么样。这是我真正与之斗争的项目的一部分。也许有人可以帮助我。
我正在使用laravel。普通的PHP也会成功,但如果有人知道laravel中的解决方案,它也会很好!
感谢您的帮助!
答案 0 :(得分:1)
要在几秒钟内获得时间差异,您需要将日期时间对象转换为时间戳:
$visit_lenght = [];
foreach($ip_with_date as $key => $val){
$date1 = new DateTime($val['first_date']);
$date2 = new DateTime($val['last_date']);
$interval = $date1->getTimestamp() - $date2->getTimestamp()
$visit_lenght[] = $interval;
}
答案 1 :(得分:0)
您可以获得两个日期的时间戳并计算差异。 像(在PHP中)。
$date1t = $date1->getTimestamp();
$date2t = $date2->getTimestamp();
$diff = $date2t - $date1t;
答案 2 :(得分:0)
尝试这种方式(一般/基本方式)
$visit_lenght = [];
foreach($ip_with_date as $key => $val){
$date1 = strtotime($val['first_date']);
$date2 = strtotime($val['last_date']);
//$interval = $date1->diff($date2)->format('%h %m %s');
$interval = $date2 - $date1;
$visit_lenght[] = $interval;
}
答案 3 :(得分:0)
你可以这样做: - >格式('Y-m-d H:i:s')
答案 4 :(得分:0)
使用DateTime()
类PHP,找到时间差异非常简单。这是一个例子:
<?php
$ip = "xxxx-xxx-xxx";
$t1 = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-12 00:10:15');
$t2 = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-12 01:10:51');
echo "User from IP {$ip} spent " . $t1->diff($t2)->format("%h hours, %i minutes and %s seconds");
?>