以秒为单位的日期格式

时间:2016-01-21 10:56:22

标签: php datetime laravel-5

首先,我很抱歉我的英语。我来自德国。

现在我的问题: 我有一个多个数组,其中包含一些日期。我必须过滤每个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中的解决方案,它也会很好!

感谢您的帮助!

5 个答案:

答案 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;

http://php.net/manual/en/datetime.gettimestamp.php

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