<?php
function getTimeSlot($str)
{
$arr = [
"2022-09-23 08:00:00",
"2022-09-23 08:30:00",
"2022-09-23 09:00:00",
"2022-09-23 09:30:00",
"2022-09-23 10:00:00",
"2022-09-23 10:30:00",
"2022-09-23 11:00:00",
"2022-09-23 13:00:00",
"2022-09-23 13:30:00",
"2022-09-23 14:00:00",
"2022-09-23 14:30:00",
"2022-09-23 15:00:00",
"2022-09-23 16:00:00",
"2022-09-23 16:30:00",
"2022-09-23 17:00:00",
"2022-09-23 17:30:00",
"2022-09-23 17:30:00",
];
$final_datetime = "$str is not within timeslots.";
$format = 'Y-m-d H:i:s';
$d = DateTime::createFromFormat($format, $str);
foreach ($arr as $k => $v) {
if ($v === $str) {
$final_datetime = $v;
break;
} else {
$prevDatetime = false;
$nextDateTime = false;
$prevStr = "";
$nextStr = "";
if (isset($arr[$k - 1])) {
$prevStr = $arr[$k - 1];
}
if (isset($arr[$k + 1])) {
$nextStr = $arr[$k + 1];
}
if ($prevStr) {
$prevDatetime = DateTime::createFromFormat($format, $prevStr);
}
if ($nextStr) {
$nextDateTime = DateTime::createFromFormat($format, $nextStr);
}
if ($prevDatetime && $nextDateTime && $d && ($d > $prevDatetime && $d < $nextDateTime)){
$final_datetime = $prevStr;
}
}
}
return $final_datetime;
}
$strings = [
"2022-09-23 07:15:00",
"2022-09-23 08:00:00",
"2022-09-23 08:01:00",
"2022-09-23 08:29:00",
"2022-09-23 08:30:00",
"2022-09-23 08:31:00",
"2022-09-23 09:12:00",
"2022-09-23 11:29:23",
"2022-09-23 15:59:00",
"2022-09-23 16:29:00",
"2022-09-23 16:30:00",
"2022-09-23 16:31:00",
"2022-09-23 16:59:00",
"2022-09-23 17:00:00",
"2022-09-23 17:01:00",
"2022-09-23 17:29:00",
"2022-09-23 17:30:00",
"2022-09-23 17:31:00",
"2022-09-23 18:59:00"
];
foreach ($strings as $s) {
echo $s . " --> " . getTimeSlot($s) . PHP_EOL;
}
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- 2022-09-23 07:15:00 --> 2022-09-23 07:15:00 is not within timeslots.
2022-09-23 08:00:00 --> 2022-09-23 08:00:00
2022-09-23 08:01:00 --> 2022-09-23 08:00:00
2022-09-23 08:29:00 --> 2022-09-23 08:00:00
2022-09-23 08:30:00 --> 2022-09-23 08:30:00
2022-09-23 08:31:00 --> 2022-09-23 08:30:00
2022-09-23 09:12:00 --> 2022-09-23 09:00:00
2022-09-23 11:29:23 --> 2022-09-23 11:00:00
2022-09-23 15:59:00 --> 2022-09-23 15:00:00
2022-09-23 16:29:00 --> 2022-09-23 16:00:00
2022-09-23 16:30:00 --> 2022-09-23 16:30:00
2022-09-23 16:31:00 --> 2022-09-23 16:30:00
2022-09-23 16:59:00 --> 2022-09-23 16:30:00
2022-09-23 17:00:00 --> 2022-09-23 17:00:00
2022-09-23 17:01:00 --> 2022-09-23 17:00:00
2022-09-23 17:29:00 --> 2022-09-23 17:00:00
2022-09-23 17:30:00 --> 2022-09-23 17:30:00
2022-09-23 17:31:00 --> 2022-09-23 17:31:00 is not within timeslots.
2022-09-23 18:59:00 --> 2022-09-23 18:59:00 is not within timeslots.
preferences:
94.09 ms | 409 KiB | 5 Q