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