- 讀取時間字符串並將其設置爲時間段的開始和結束。
- 閱讀下一次字符串。
- 計算時間串的差異,並且如果它小於00:01:00延長的時間段。如果超過1分鐘,則打印時間段並開始新的時間段。進入2
當您使用mtkime()和日期(),你應該叫
date_default_timezone_set('UTC');
下面是一個代碼示例。數據作爲字符串存儲在數組中。
date_default_timezone_set('UTC');
$arr = array(
'12:01:00',
'12:02:00',
'12:03:00',
'12:10:00',
'12:11:00',
'12:12:00',
'12:13:00',
'12:14:00',
'12:15:00'
);
// Start of code sample
$firsttime = true;
$start_time = '';
$end_time = '';
foreach ($arr as $time) {
if ($firsttime === true) { // start of a new time range
// above test can be changed to $start_time === '' && $end_time === ''
$firsttime = false;
$start_time = $time;
$end_time = $time;
} else {
$diff = diff_time($end_time, $time);
// insert error check here
if ($diff <= '00:01:00') { // consecutive
$end_time = $time; // update end of the time range
} else { // end of the time range
echo $start_time, '<br />';
echo $end_time, '<br />';
$start_time = $time;
$end_time = $time;
}
}
}
if ($start_time !== '' && $end_time !== '') {
echo $start_time, '<br />';
echo $end_time, '<br />';
}
echo 'End<hr />';
function diff_time($from_time, $to_time) {
if (preg_match('/([0-9]+):([0-9]+):([0-9]+)/', $from_time, $captured)) {
$from = mktime($captured[1], $captured[2], $captured[3], 1, 1, 2000);
} else {
return false;
}
if (preg_match('/([0-9]+):([0-9]+):([0-9]+)/', $to_time, $captured)) {
$to = mktime($captured[1], $captured[2], $captured[3], 1, 1, 2000);
} else {
return false;
}
if ($from > $to) {
return date('-H:i:s', $from - $to);
} else {
return date('H:i:s', $to - $from);
}
您的問題需要一些更清晰的分組部分 –