Opening Hours — це пакет PHP від Spatie для запиту та форматування набору робочих годин. Ви можете використовувати його, щоб представити час на день і включити винятки для таких речей, як свята та інші вихідні дні в певну дату певного року або повторювані (відбуваються щороку). Readme файл проекту має цей приклад, щоб проілюструвати, як ви можете налаштувати години:
$openingHours = OpeningHours::create([
'monday' => ['09:00-12:00', '13:00-18:00'],
'tuesday' => ['09:00-12:00', '13:00-18:00'],
'wednesday' => ['09:00-12:00'],
'thursday' => ['09:00-12:00', '13:00-18:00'],
'friday' => ['09:00-12:00', '13:00-20:00'],
'saturday' => ['09:00-12:00', '13:00-16:00'],
'sunday' => [],
'exceptions' => [
'2016-11-11' => ['09:00-12:00'],
'2016-12-25' => [],
'01-01' => [], // Recurring on each 1st of January
'12-25' => ['09:00-12:00'], // Recurring on each 25th of December
],
]);
// This will allow you to display things like:
$now = new DateTime('now');
$range = $openingHours->currentOpenRange($now);
if ($range) {
echo "It's open since ".$range->start()."\n";
echo "It will close at ".$range->end()."\n";
} else {
echo "It's closed since ".$openingHours->previousClose($now)->format('l H:i')."\n";
echo "It will re-open at ".$openingHours->nextOpen($now)->format('l H:i')."\n";
}
Цей пакет має безліч параметрів конфігурації і може бути використаний на будь-якому PHP-проекті без будь-яких залежностей. Хоча цей пакет не є абсолютно новим пакетом Spatie, ми ніколи не розглядали його і вважаємо, що вам варто його перевірити! Ви можете отримати інструкції з налаштування та переглянути більше прикладів API на GitHub за посиланням spatie/opening-hours.
Якщо ви хочете дізнатися більше довідкової інформації про те, чому цей пакет був створений, Фрік Ван дер Хертен спочатку написав про це у своєму блозі: Управління годинами роботи за допомогою PHP.