Php 以秒为单位的日期格式卡住
首先,我为我的英语感到抱歉。我来自德国 现在我的问题是: 我有一个多个数组,其中有一些日期。我必须过滤每个IP的第一个和最后一个日期,因为我需要两个日期的差异来知道用户在我的网站上花了多少时间。 我做到了,得到了我所需要的一切。以下是我的代码输出的一部分: $ip_和_日期:Php 以秒为单位的日期格式卡住,php,datetime,laravel-5,Php,Datetime,Laravel 5,首先,我为我的英语感到抱歉。我来自德国 现在我的问题是: 我有一个多个数组,其中有一些日期。我必须过滤每个IP的第一个和最后一个日期,因为我需要两个日期的差异来知道用户在我的网站上花了多少时间。 我做到了,得到了我所需要的一切。以下是我的代码输出的一部分: $ip_和_日期: Array ( [0] => Array ( [ip] => 72.xx.xx.xx [first_date] => 2015-10
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为单位的时间
但我现在真的不知道该怎么办。这是我项目的一部分,我正在与之斗争。也许你们中有人能帮我
我和拉威尔一起工作。普通的PHP也能做到,但如果有人知道laravel中的解决方案,那也不错
谢谢你的帮助 您可以获得两个日期的时间戳并计算差异。 类似于(在php中) 试试这种方法(常规/基本方法)
要以秒为单位获取时间差,您需要将datetime对象转换为时间戳:
$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;
}
您可以这样做:
->格式('Y-m-dh:i:s')使用PHP的DateTime()
类,查找时间之间的差异非常简单。以下是一个示例:
<?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");
?>
我试过了,但输出有点奇怪..--[0]=>3636[1]=>3637[2]=>3[3]=>9)将答案标记为已接受,这样每个人都可以看到它是正确的:-)
$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;
}
<?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");
?>