>我有一个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
我知道,如果最终项目有一个"签入"条目而没有"签出"条目,那么它可能会说他们已经签入了很长时间 - 但暂时没关系 - 除非答案当然可以通过在午夜限制它来解决这个问题。
帮助将不胜感激。
从 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);
希望这对;)有所帮助