Php 以秒为单位的日期格式卡住

Php 以秒为单位的日期格式卡住,php,datetime,laravel-5,Php,Datetime,Laravel 5,首先,我为我的英语感到抱歉。我来自德国 现在我的问题是: 我有一个多个数组,其中有一些日期。我必须过滤每个IP的第一个和最后一个日期,因为我需要两个日期的差异来知道用户在我的网站上花了多少时间。 我做到了,得到了我所需要的一切。以下是我的代码输出的一部分: $ip_和_日期: Array ( [0] => Array ( [ip] => 72.xx.xx.xx [first_date] => 2015-10

首先,我为我的英语感到抱歉。我来自德国

现在我的问题是: 我有一个多个数组,其中有一些日期。我必须过滤每个IP的第一个和最后一个日期,因为我需要两个日期的差异来知道用户在我的网站上花了多少时间。 我做到了,得到了我所需要的一切。以下是我的代码输出的一部分:

$ip_和_日期:

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");
?>