php - 计算每 2 行的时间戳之间的时间

标签 php mysql datediff

我有下表,正如您在表中看到的,用户对每个休息都有一个“休息”和“休息”条目,但我正在努力计算每次休息所花费的时间。 你们能帮忙吗? 谢谢。

ID  Name      Action     Datetime
 2  John Doe  BREAK OUT  2018-05-24 09:00:41
 3  John Doe  BREAK IN   2018-05-24 09:10:45
 4  John Doe  BREAK OUT  2018-05-24 13:00:49
 5  John Doe  BREAK IN   2018-05-24 13:30:52
 6  John Doe  BREAK OUT  2018-05-24 15:30:56
 7  John Doe  BREAK IN   2018-05-24 15:40:59

最佳答案

好吧,由于您没有真正说明如何获取这些数据以及您想在哪里显示结果,因此您可以通过以下方式获得您想要的结果:

function getDateDiff($breakOut, $breakIn) {
    $dateStart = new DateTime($breakOut);
    $dateEnd   = new DateTime($breakIn); 

    $dateDiff  = $dateStart->diff($dateEnd); 

    return $dateDiff->format("%H:%I:%S");
}

现在您只需使用该函数并返回 diff :

2   John Doe    BREAK OUT   2018-05-24 09:00:41
3   John Doe    BREAK IN    2018-05-24 09:10:45

var_dump(getDateDiff("2018-05-24 09:00:41", "2018-05-24 09:10:45")); // '00:10:04'

4   John Doe    BREAK OUT   2018-05-24 13:00:49
5   John Doe    BREAK IN    2018-05-24 13:30:52

var_dump(getDateDiff("2018-05-24 13:00:49", "2018-05-24 13:30:52")); // '00:30:03'

6   John Doe    BREAK OUT   2018-05-24 15:30:56
7   John Doe    BREAK IN    2018-05-24 15:40:59

var_dump(getDateDiff("2018-05-24 15:30:56", "2018-05-24 15:40:59")); // '00:10:03'

因此,如果您想在 PHP 循环中获得这些结果,也许您可​​以尝试以下操作:

// your data array, I assume it looks like this since I have no info
$array(
    2 => array(
        "name" => "John Doe",
        "break" => "2018-05-24 09:00:41",
    ),
    3 => array(
        "name" => "John Doe",
        "break" => "2018-05-24 09:10:45",
    ),
    4 => array(
        "name" => "John Doe",
        "break" => "2018-05-24 13:00:49",
    ),
    5 => array(
        "name" => "John Doe",
        "break" => "2018-05-24 13:30:52",
    ),
    ...
); 

$array_break_time = array();
foreach ($array as $key => $data) {
    if ($key % 2 == 0) {
        if(isset($array[$key + 1])) {
            $array_break_time[] = getDateDiff($data["break"], $array[$key + 1]["break"])
        }
    }
}

输出是:

$array_break_time = array(
    0 => '00:10:04',
    1 => '00:30:03'
    ....
);

但是由于我没有更多详细信息,因此不知道它是否适合您的情况!

关于php - 计算每 2 行的时间戳之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50530929/

相关文章:

java - 参数太少。预期 1 个错误 - 使用 MS Access 的 DateDiff 函数时

php - 使用 jQuery 和 Ajax 进行点击垃圾邮件防护?

php - 如何在 Laravel 5 中添加外部类

mysql - 查询日期范围内的帮助,但不是最近的

mysql - 求助!如何创建一个新列来显示两个不同时期之间的持续时间

java - 在sql jdbc查询中使用datediff

php - Laravel 4 - 用于 Textarea 编辑的反转 Markdown

php - odbc_连接sql服务器

python - 通过 Django 查询 salesforce 时出现 SalesforceMalformedRequest 错误

mysql - <TABLE> 的表存储引擎在按查询排序时没有此选项(错误 1031)