Поиск следующей доступной даты и времени, сочетающий еженедельное расписание и особые дни в PHPPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Поиск следующей доступной даты и времени, сочетающий еженедельное расписание и особые дни в PHP

Сообщение Anonymous »

Я работаю над проектом PHP, в котором мне нужно рассчитать время работы предприятия, которое включает в себя как обычные еженедельные графики, так и специальные нестандартные часы для праздников. У меня есть два массива: один для обычного расписания, а другой для нестандартного времени.
Массив обычного времени работы:

Код: Выделить всё

$opening_times = [
['open' => '09:00:00', 'weekday' => 1], // Monday
['open' => '09:00:00', 'weekday' => 2], // Tuesday
['open' => '09:00:00', 'weekday' => 4], // Thursday, Wednesday is closed
['open' => '09:00:00', 'weekday' => 5], // Friday opening time 1
['open' => '16:00:00', 'weekday' => 5], // Friday opening time 2
['open' => '09:00:00', 'weekday' => 6], // Saturday
['open' => '09:00:00', 'weekday' => 7], // Sunday
];
Нестандартное время работы (по праздникам и т. д.):

Код: Выделить всё

$special_opening_times = [
['date' => '2024-04-24', 'open' => '08:00:00'],
['date' => '2024-04-27', 'open' => '08:00:00'],
['date' => '2024-04-28', 'open' => '09:00:00'],
['date' => '2024-04-30', 'open' => '07:00:00'],
['date' => '2024-04-25', 'open' => '11:00:00']
];
Вдохновляясь этим вопросом, я смог создать это для массива нестандартных часов работы:

Код: Выделить всё

// Your reference datetime
$reference_datetime = '2024-04-25 10:30:00';

// Array with dates and times
$special_opening_times = [
['date' => '2024-04-24', 'open' => '08:00:00'],
['date' => '2024-04-27', 'open' => '08:00:00'],
['date' => '2024-04-28', 'open' => '09:00:00'],
['date' => '2024-04-30', 'open' => '07:00:00'],
['date' => '2024-04-25', 'open' => '11:00:00'] // Same day, later time
];

// Function to sort datetimes
function datetime_sort($a, $b) {
$a_datetime = strtotime($a['date'] . ' ' . $a['open']);
$b_datetime = strtotime($b['date'] . ' ' . $b['open']);
return $a_datetime - $b_datetime;
}

// Sort datetimes using the custom function
usort($special_opening_times, 'datetime_sort');

// Variable to hold the next closest datetime
$next_datetime = null;

// Loop through sorted datetimes and find the next closest datetime
foreach ($special_opening_times as $date_array) {
$current_datetime = strtotime($date_array['date'] . ' ' . $date_array['open']);
if (strtotime($reference_datetime) < $current_datetime) {
$next_datetime = $date_array['date'] . ' ' . $date_array['open'];
break;
}
}

// Output the next closest datetime
echo $next_datetime;
Кажется, это работает так, как и ожидалось, однако мне все еще нужно найти ближайшую дату и время открытия по еженедельным часам работы, и я совершенно не понимаю, как это сделать. . Может ли кто-нибудь пролить свет. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/783 ... days-in-ph
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Docx в формате openxml, а при рендеринге перечислены особые случаи.
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Рассчитать и исключать еженедельное общее количество из набора данных
    Anonymous » » в форуме MySql
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как протестировать метод, сочетающий в себе RxJava и Suspend?
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как протестировать метод, сочетающий в себе RxJava и Suspend?
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Поиск следующей даты и времени на основе еженедельного, ежемесячного расписания
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»