Я использую php 7.4
и создаю функцию, которая должна проверять определенные условия, такие как:
- Проверьте, были ли xx Минуты -
$timeToLastPostinMinutes
- прошло, пока не начнется процесс расписания - Сегодня допустимый день
- Сегодня временной интервал, который находится в допустимом диапазоне
- Если все условия выполнены, то вернуть
Datetime
с xx добавлено минут
Я создал следующую функцию, которая должна проверить два условия выше:
<?php
/**
* Weekdays: [1, 2, 3, 4, 5, 6, 7],
* Times are as an array specified, from-to: [["09:00", "11:00"], ["18:00", "24:00"]],
* TimeTolastPost example 15 for 15 minutes
* @param Datetime $lastPostdateTime
* @param $weekdays
* @param $times
* @param $timeToLastPostinMinutes
* @throws Exception
*/
function createPostSchedule(Datetime $lastPostdateTime, $allowedWeekdays, $allowedTimes, $timeToLastPostinMinutes, $timeToWaitInMin)
{
$today = new DateTime();
// if $lastPostdateTime is x Minutes ($timeToWaitInMin) in the past, then start the schedule process
if ($lastPostdateTime->add(new DateInterval('PT' . $timeToWaitInMin . 'M'))->getTimestamp() > $today->getTimestamp()) {
$today->format('N');
// check if today is in the day array
if(in_array(intval($today->format('N')), $allowedWeekdays)) {
// check if time is in the slot
foreach ($allowedTimes as $key => $val) {
if (strtotime($val[0]) > $today->getTimestamp() && strtotime($val[1]) < $today->getTimestamp()) {
if($timeToLastPostinMinutes != 0) {
return $lastPostdateTime->add(new DateInterval('PT' . $timeToLastPostinMinutes . 'M'));
}
}
}
}
}
}
$dateTime = DateTime::createFromFormat('m-d-Y H:i:s', '10-16-2020 15:55:33');
$postSchedule = createPostSchedule($dateTime, [1, 2, 3, 4, 5], [["09:00", "24:00"]], 15, 1440);
echo $postSchedule->format('Y-m-d H:i:s');
Однако я получаю null
назад.
Я думаю, что может быть проблема в сравнении временных интервалов. Тем не менее, они сравнивают две метки времени друг с другом, что кажется правильным?
Любые предложения, почему я получаю null
обратно?
Я ценю ваши ответы!