Я работаю над проектом PHP, в котором мне нужно рассчитать время работы предприятия, которое включает в себя как обычные еженедельные графики, так и специальные нестандартные часы для праздников. У меня есть два массива: один для обычного расписания, а другой для нестандартного времени. Массив обычного времени работы:
// 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;
Кажется, это работает так, как и ожидалось, однако мне все еще нужно найти ближайшую дату и время открытия по еженедельным часам работы, и я совершенно не понимаю, как это сделать. . Может ли кто-нибудь пролить свет. Спасибо.
Я работаю над проектом PHP, в котором мне нужно рассчитать время работы предприятия, которое включает в себя как обычные еженедельные графики, так и специальные нестандартные часы для праздников. У меня есть два массива: один для обычного расписания, а другой для нестандартного времени. [b]Массив обычного времени работы:[/b] [code]$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 ]; [/code] [b]Нестандартное время работы (по праздникам и т. д.):[/b] [code]$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'] ]; [/code] Вдохновляясь этим вопросом, я смог создать это для массива нестандартных часов работы: [code]// 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; [/code] Кажется, это работает так, как и ожидалось, однако мне все еще нужно найти ближайшую дату и время открытия по еженедельным часам работы, и я совершенно не понимаю, как это сделать. . Может ли кто-нибудь пролить свет. Спасибо.
Я просмотрел эту статью. В статье MSDN «Работа с нумерованными списками в Open XML WordprocessingML» эта проблема подробно обсуждается
описывается, как отображать списки внутри файла docx, но на самом деле при его реализации ошибок в некоторых...
Логика ниже показывает детали уровня счета -фактуры по дате доставки. Мне нужно исключить тех водителей, которые не превышают 1000 миль в неделю. После того, как оператор WHERE исключал эти водители, я создал подложку, чтобы исключить этих драйверов...
Итак, у меня есть простой тест, в котором я пытаюсь проверить результат ошибки, примерно так:
@Test
fun `test`() {
every { Util.fetchLocation()} returns Single.error(Exception())
val resultErrors = testableClass.testableFun().test().errors()...
Итак, у меня есть простой тест, в котором я пытаюсь проверить результат ошибки, примерно так:
@Test
fun `test`() {
every { Util.fetchLocation()} returns Single.error(Exception())
val resultErrors = testableClass.testableFun().test().errors()...