,可以通过以下步骤实现:
以下是一个示例代码:
function findContinuousDateTime($array) {
$timestamps = array();
foreach ($array as $datetime) {
$timestamp = strtotime($datetime);
if ($timestamp !== false) {
$timestamps[] = $timestamp;
}
}
sort($timestamps);
$result = array();
$start = null;
$end = null;
foreach ($timestamps as $timestamp) {
if ($start === null) {
$start = $timestamp;
$end = $timestamp;
} else {
if ($timestamp - $end === 86400) { // 86400秒等于一天
$end = $timestamp;
} else {
$result[] = array(
'start' => date('Y-m-d H:i:s', $start),
'end' => date('Y-m-d H:i:s', $end)
);
$start = $timestamp;
$end = $timestamp;
}
}
}
if ($start !== null && $end !== null) {
$result[] = array(
'start' => date('Y-m-d H:i:s', $start),
'end' => date('Y-m-d H:i:s', $end)
);
}
return $result;
}
$array = array(
'2022-01-01 12:00:00',
'2022-01-02 12:00:00',
'2022-01-03 12:00:00',
'2022-01-05 12:00:00',
'2022-01-06 12:00:00',
'2022-01-07 12:00:00',
'2022-01-09 12:00:00',
'2022-01-10 12:00:00'
);
$result = findContinuousDateTime($array);
foreach ($result as $datetime) {
echo "连续的日期时间段:{$datetime['start']} - {$datetime['end']}\n";
}
这段代码将输出以下结果:
连续的日期时间段:2022-01-01 12:00:00 - 2022-01-03 12:00:00
连续的日期时间段:2022-01-05 12:00:00 - 2022-01-07 12:00:00
连续的日期时间段:2022-01-09 12:00:00 - 2022-01-10 12:00:00
在这个例子中,我们假设输入的数组中包含了一些日期时间字符串。代码首先将这些字符串转换为时间戳,并进行排序。然后,它遍历排序后的时间戳数组,检查相邻的时间戳是否连续。如果连续,则将它们视为一个连续的日期时间段,并记录下起始时间和结束时间。最后,代码返回一个结果数组,其中包含了所有连续的日期时间段。
领取专属 10元无门槛券
手把手带您无忧上云