Všetky balíky
Opening Hours for Laravel
Dotazovanie otváracích hodín
OpeningHours::for($owner) — alebo openingHours() na vlastníkovi — vráti nemenný dotazovací objekt pre predvolený (alebo pomenovaný) kalendár. Vstupné okamihy prijímajú akýkoľvek DateTimeInterface; každý vrátený okamih je CarbonImmutable v časovom pásme kalendára:
use Carbon\CarbonImmutable;
use RoundlyConsulting\OpeningHours\Facades\OpeningHours;
$hours = OpeningHours::for($clinic); // default calendar — or $clinic->openingHours()
$hours->isOpen(); // now
$hours->isOpenAt(CarbonImmutable::parse('2026-10-25 02:30', 'Europe/Bratislava'));
$hours->nextOpen(); // ?CarbonImmutable, calendar timezone
$hours->nextClose();
$hours->previousOpen();
$hours->previousClose();
$hours->currentPeriod(); // ?OpeningPeriod (coalesced run)
$hours->currentRange(); // ?TimeRange as defined (label, capacity)
$hours->nextPeriod();
$hours->withOutputTimezone('UTC')->nextClose(); // same answer, reported in UTC
OpeningHours::for($clinic, 'pickup')->isOpenDuring($from, $to);Pravidlá navigácie
- Navigácia je striktná: nextOpen($t) je po $t, previousOpen($t) pred ním.
- Navigácia prezerá search_days miestnych dní po (alebo pred) dni $t — per volanie to zmeníte parametrom searchDays:; ak sa tam nič nenájde, vráti null (nextOpen($monday, searchDays: 1) vidí pondelok aj utorok). Obdobie, ktoré sa otvorí v tomto okne, stále hlási svoj skutočný nextClose(), aj za polnocou. Kalendár otvorený nonstop nemá nextClose().
- Obdobia sú polootvorené: v začiatku otvorené, v konci zatvorené.
- Nadväzujúce rozsahy (09–12 + 12–13) sa pri navigácii rátajú ako jedno obdobie, rovnako pondelok 22:00–24:00 a utorok 00:00–06:00.
- currentPeriod() vráti zlúčený úsek ako OpeningPeriod (start, end, label, source, capacity); currentRange() vráti rozsah tak, ako je definovaný, vrátane popisu a kapacity.
Ďalšie kontroly
$hours->isClosed(); // now
$hours->isClosedAt($at);
$hours->nextOpen($after, searchDays: 30); // override search_days per call
$hours->nextOpen($monday, searchDays: 1); // sees Monday and Tuesday
$hours->isAlwaysOpen();
$hours->isAlwaysClosed();
$hours->timezone(); // DateTimeZone the calendar is evaluated in
$hours->revision(); // ?int — null for in-memory calendars
$hours->definition(); // CalendarData
$period = $hours->currentPeriod(); // ?OpeningPeriod
$period?->start; // CarbonImmutable
$period?->end;
$period?->label;„Teraz“ pochádza z fasády Date v Laraveli, takže v testoch fungujú Carbon::setTestNow() aj travelTo().
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.