我在php中获得了一系列数据 - 它并不完美,但这是其中一个的例子。
"time_in": [
"22:17:23",
"22:17:26",
"22:17:27",
"22:17:28",
"22:18:54",
"22:19:28",
"22:20:49",
"22:20:52",
"22:22:17",
"22:31:13"
],
"time_out": [
"22:17:33",
"22:18:47",
"22:18:52",
"22:18:52",
"22:19:12",
"22:22:08"
]
我需要找出一个公式来计算$total_time_in
和$total_time_out
我知道如果有"签入"进入并且没有"签出"最后项目的进入,然后它可能会说他们已经被检查了很长时间 - 但这暂时还可以 - 除非当然答案可以通过在午夜封顶来解决这个问题。
帮助将不胜感激。
答案 0 :(得分:1)
从PHP 5.3开始,您可以使用DateTime对象,它们提供了一种处理日期和时间的简便方法。所以首先你可以使用静态方法createFromFormat,知道结果对象将在当前日期初始化。
$a = DateTime::createFromFormat('H:i:s', '22:17:23');
$b = DateTime::createFromFormat('H:i:s', '22:17:33');
$interval = $a->diff($b);
echo $interval->format('%R%s second(s)');
echo "\n"
接下来如果你有一个变量$ in = [' t1',t2 ..]和$ out你只能这样做:
$k = 0;
array_map(function($inputTime) use ($out, &$k) {
$a = DateTime::createFromFormat('H:i:s', $inputTime);
if (!isset($out[$k])) {
return;
}
$b = DateTime::createFromFormat('H:i:s', $out[$k] );
$interval = $a->diff($b);
echo $interval->format('%R%s second(s)');
echo "\n";
$k++;
},$in);
希望这可以提供帮助;)