Mit spatie/opening-hours
erstellen Sie ein Objekt, das die Öffnungszeiten eines Unternehmens beschreibt, das Sie abfragen können, ob es an Tagen oder bestimmten Daten open
oder closed
, oder das Sie zur Darstellung der Zeiten pro Tag verwenden können.
spatie/opening-hours
können dank cmixin/business-time direkt auf Carbon verwendet werden, sodass Sie die Öffnungszeitenfunktionen direkt in Ihren erweiterten Datumsobjekten nutzen können.
Durch die Eingabe eines regulären Zeitplans und einer Liste von Ausnahmen wird eine Reihe von Öffnungszeiten erstellt.
// Add the use at the top of each file where you want to use the OpeningHours class:
use Spatie OpeningHours OpeningHours ;
$ 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" ;
}
Das Objekt kann für einen Tag in der Woche abgefragt werden, wodurch ein Ergebnis basierend auf dem regulären Zeitplan zurückgegeben wird:
// Open on Mondays:
$ openingHours -> isOpenOn ( ' monday ' ); // true
// Closed on Sundays:
$ openingHours -> isOpenOn ( ' sunday ' ); // false
Es kann auch nach einem bestimmten Datum und einer bestimmten Uhrzeit abgefragt werden:
// Closed because it's after hours:
$ openingHours -> isOpenAt ( new DateTime ( ' 2016-09-26 19:00:00 ' )); // false
// Closed because Christmas was set as an exception
$ openingHours -> isOpenOn ( ' 2016-12-25 ' ); // false
Es können auch Arrays von Öffnungszeiten für eine Woche oder einen Tag zurückgegeben werden:
// OpeningHoursForDay object for the regular schedule
$ openingHours -> forDay ( ' monday ' );
// OpeningHoursForDay[] for the regular schedule, keyed by day name
$ openingHours -> forWeek ();
// Array of day with same schedule for the regular schedule, keyed by day name, days combined by working hours
$ openingHours -> forWeekCombined ();
// OpeningHoursForDay object for a specific day
$ openingHours -> forDate ( new DateTime ( ' 2016-12-25 ' ));
// OpeningHoursForDay[] of all exceptions, keyed by date
$ openingHours -> exceptions ();
Im Bauwesen können Sie eine Markierung für Überlaufzeiten über Tage hinweg setzen. Beispiel: Ein Nachtclub ist freitags und samstags bis 3 Uhr morgens geöffnet:
$ openingHours = Spatie OpeningHours OpeningHours:: create ([
' overflow ' => true ,
' friday ' => [ ' 20:00-03:00 ' ],
' saturday ' => [ ' 20:00-03:00 ' ],
], null );
Dadurch kann die API anhand der Daten des Vortages prüfen, ob die Öffnungszeiten in ihrem Zeitbereich geöffnet sind.
Sie können Daten in Definitionen hinzufügen und diese dann abrufen:
$ openingHours = OpeningHours:: create ([
' monday ' => [
' data ' => ' Typical Monday ' ,
' 09:00-12:00 ' ,
' 13:00-18:00 ' ,
],
' tuesday ' => [
' 09:00-12:00 ' ,
' 13:00-18:00 ' ,
[
' 19:00-21:00 ' ,
' data ' => ' Extra on Tuesday evening ' ,
],
],
' exceptions ' => [
' 2016-12-25 ' => [
' data ' => ' Closed for Christmas ' ,
],
],
]);
echo $ openingHours -> forDay ( ' monday ' )-> data ; // Typical Monday
echo $ openingHours -> forDate ( new DateTime ( ' 2016-12-25 ' ))-> data ; // Closed for Christmas
echo $ openingHours -> forDay ( ' tuesday ' )[ 2 ]-> data ; // Extra on Tuesday evening
Im obigen Beispiel handelt es sich bei den Daten um Zeichenfolgen, es kann jedoch jede Art von Wert sein. Sie können also mehrere Eigenschaften in ein Array einbetten.
Zur Vereinfachung der Struktur kann das Daten-Stunden-Paar ein vollständig assoziatives Array sein, sodass das obige Beispiel genau dem folgenden entspricht:
$ openingHours = OpeningHours:: create ([
' monday ' => [
' hours ' => [
' 09:00-12:00 ' ,
' 13:00-18:00 ' ,
],
' data ' => ' Typical Monday ' ,
],
' tuesday ' => [
[ ' hours ' => ' 09:00-12:00 ' ],
[ ' hours ' => ' 13:00-18:00 ' ],
[ ' hours ' => ' 19:00-21:00 ' , ' data ' => ' Extra on Tuesday evening ' ],
],
// Open by night from Wednesday 22h to Thursday 7h:
' wednesday ' => [ ' 22:00-24:00 ' ], // use the special "24:00" to reach midnight included
' thursday ' => [ ' 00:00-07:00 ' ],
' exceptions ' => [
' 2016-12-25 ' => [
' hours ' => [],
' data ' => ' Closed for Christmas ' ,
],
],
]);
to
dem Trennzeichen können Sie mehrere Tage gleichzeitig, für die Woche oder für Ausnahmen angeben:
$ openingHours = OpeningHours:: create ([
' monday to friday ' => [ ' 09:00-19:00 ' ],
' saturday to sunday ' => [],
' exceptions ' => [
// Every year
' 12-24 to 12-26 ' => [
' hours ' => [],
' data ' => ' Holidays ' ,
],
// Only happening in 2024
' 2024-06-25 to 2024-07-01 ' => [
' hours ' => [],
' data ' => ' Closed for works ' ,
],
],
]);
Das letzte Strukturwerkzeug ist der Filter. Er ermöglicht die Übergabe von Abschlüssen (oder aufrufbaren Funktions-/Methodenreferenzen), die ein Datum als Parameter verwenden und die Einstellungen für das angegebene Datum zurückgeben.
$ openingHours = OpeningHours:: create ([
' monday ' => [
' 09:00-12:00 ' ,
],
' filters ' => [
function ( $ date ) {
$ year = intval ( $ date -> format ( ' Y ' ));
$ easterMonday = new DateTimeImmutable ( ' 2018-03-21 + ' .( easter_days ( $ year ) + 1 ). ' days ' );
if ( $ date -> format ( ' m-d ' ) === $ easterMonday -> format ( ' m-d ' )) {
return []; // Closed on Easter Monday
// Any valid exception-array can be returned here (range of hours, with or without data)
}
// Else the filter does not apply to the given date
},
],
]);
Wenn in der Eigenschaft "exceptions"
ein aufrufbares Element gefunden wird, wird es automatisch zu den Filtern hinzugefügt, sodass Sie Filter und Ausnahmen sowohl im Ausnahmen -Array kombinieren können. Der erste Filter, der einen Wert ungleich Null zurückgibt, hat Vorrang vor den nächsten Filtern und das Filter- Array hat Vorrang vor den Filtern im Ausnahme -Array.
Warnung: Wir durchlaufen alle Filter für jedes Datum, von dem aus wir die Öffnungszeiten abrufen müssen, und können das Ergebnis weder prädizieren noch zwischenspeichern (kann eine Zufallsfunktion sein). Daher müssen Sie mit Filtern, zu vielen Filtern oder langen Prozessen innerhalb von Filtern vorsichtig sein kann erhebliche Auswirkungen auf die Leistung haben.
Es kann auch die nächste offene oder geschlossene DateTime
von einer bestimmten DateTime
zurückgeben.
// The next open datetime is tomorrow morning, because we’re closed on 25th of December.
$ nextOpen = $ openingHours -> nextOpen ( new DateTime ( ' 2016-12-25 10:00:00 ' )); // 2016-12-26 09:00:00
// The next open datetime is this afternoon, after the lunch break.
$ nextOpen = $ openingHours -> nextOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' )); // 2016-12-24 13:00:00
// The next close datetime is at noon.
$ nextClose = $ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 10:00:00 ' )); // 2016-12-24 12:00:00
// The next close datetime is tomorrow at noon, because we’re closed on 25th of December.
$ nextClose = $ openingHours -> nextClose ( new DateTime ( ' 2016-12-25 15:00:00 ' )); // 2016-12-26 12:00:00
Lesen Sie den Abschnitt zur Verwendung für die vollständige API.
Spatie ist eine Webdesign-Agentur mit Sitz in Antwerpen, Belgien. Eine Übersicht aller unserer Open-Source-Projekte finden Sie auf unserer Website.
Wir investieren viele Ressourcen in die Erstellung erstklassiger Open-Source-Pakete. Sie können uns unterstützen, indem Sie eines unserer kostenpflichtigen Produkte kaufen.
Wir freuen uns sehr, dass Sie uns eine Postkarte aus Ihrer Heimatstadt schicken und erwähnen, welches unserer Pakete Sie verwenden. Unsere Adresse finden Sie auf unserer Kontaktseite. Wir veröffentlichen alle erhaltenen Postkarten auf unserer virtuellen Postkartenwand.
Sie können das Paket über Composer installieren:
composer require spatie/opening-hours
Das Paket sollte nur über die OpeningHours
-Klasse verwendet werden. Darüber hinaus werden durchgehend drei Wertobjektklassen verwendet: Time
, das eine einzelne Zeit darstellt, TimeRange
, das einen Zeitraum mit einem Anfang und einem Ende darstellt, und openingHoursForDay
, das eine Reihe von TimeRange
s darstellt, die sich nicht überlappen können.
SpatieOpeningHoursOpeningHours
OpeningHours::create(array $data, $timezone = null, $toutputTimezone = null): SpatieOpeningHoursOpeningHours
Statische Fabrikmethode zum Ausfüllen der Öffnungszeiten.
$ openingHours = OpeningHours:: create ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]);
Wenn keine Zeitzone angegeben ist, geht OpeningHours
einfach davon aus, dass Sie immer DateTime
-Objekte übergeben, deren Zeitzone bereits Ihrem Zeitplan entspricht.
Wenn Sie ein $timezone
als zweites Argument oder über den Array-Schlüssel 'timezone'
übergeben (es kann entweder ein DateTimeZone
Objekt oder ein string
sein), werden übergebene Datumsangaben zu Beginn jeder Methode in diese Zeitzone konvertiert, dann wenn Die Methode gibt ein Datumsobjekt zurück (z. B. nextOpen
, nextClose
, previousOpen
, previousClose
, currentOpenRangeStart
oder currentOpenRangeEnd
), dann wird es vor der Ausgabe wieder in die ursprüngliche Zeitzone konvertiert, damit das Objekt einen Moment im Benutzer widerspiegeln kann Ortszeit, während OpeningHours
in seiner eigenen Geschäftszeitzone bleiben kann.
Alternativ können Sie auch sowohl die Eingabe- als auch die Ausgabezeitzone angeben (mit dem zweiten und dritten Argument) oder ein Array verwenden:
$ openingHours = OpeningHours:: create ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
' timezone ' => [
' input ' => ' America/New_York ' ,
' output ' => ' Europe/Oslo ' ,
],
]);
OpeningHours::mergeOverlappingRanges(array $schedule) : array
Aus Sicherheitsgründen wird beim Erstellen eines OpeningHours
Objekts mit überlappenden Bereichen eine Ausnahme ausgelöst, es sei denn 'overflow' => true,
in der Definition des Arrays „Öffnungszeiten“. Sie können sie auch explizit zusammenführen.
$ ranges = [
' monday ' => [ ' 08:00-11:00 ' , ' 10:00-12:00 ' ],
];
$ mergedRanges = OpeningHours:: mergeOverlappingRanges ( $ ranges ); // Monday becomes ['08:00-12:00']
OpeningHours:: create ( $ mergedRanges );
// Or use the following shortcut to create from ranges that possibly overlap:
OpeningHours:: createAndMergeOverlappingRanges ( $ ranges );
Nicht alle Tage sind obligatorisch. Fehlt ein Tag, wird er als geschlossen gesetzt.
OpeningHours::fill(array $data): SpatieOpeningHoursOpeningHours
Das Gleiche wie create
, jedoch nicht statisch.
$ openingHours = ( new OpeningHours )-> fill ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]);
OpeningHours::forWeek(): SpatieOpeningHoursOpeningHoursForDay[]
Gibt ein Array von OpeningHoursForDay
Objekten für eine reguläre Woche zurück.
$ openingHours -> forWeek ();
OpeningHours::forWeekCombined(): array
Gibt eine Reihe von Tagen zurück. Der Array-Schlüssel ist der erste Tag mit den gleichen Stunden. Die Array-Werte sind Tage mit den gleichen Arbeitszeiten und dem gleichen OpeningHoursForDay
-Objekt.
$ openingHours -> forWeekCombined ();
OpeningHours::forWeekConsecutiveDays(): array
Gibt ein Array verketteter Tage, benachbarter Tage mit denselben Stunden, zurück. Der Array-Schlüssel ist der erste Tag mit den gleichen Stunden. Die Array-Werte sind Tage mit den gleichen Arbeitszeiten und dem gleichen OpeningHoursForDay
-Objekt.
Warnung : Aufeinanderfolgende Tage werden von Montag bis Sonntag ohne Schleife berücksichtigt (Montag folgt nicht auf Sonntag), unabhängig von der Reihenfolge der Tage in den Anfangsdaten.
$ openingHours -> forWeekConsecutiveDays ();
OpeningHours::forDay(string $day): SpatieOpeningHoursOpeningHoursForDay
Gibt ein OpeningHoursForDay
Objekt für einen regulären Tag zurück. Ein Tag ist eine kleingeschriebene Zeichenfolge des englischen Tagesnamens.
$ openingHours -> forDay ( ' monday ' );
OpeningHours::forDate(DateTimeInterface $dateTime): SpatieOpeningHoursOpeningHoursForDay
Gibt ein OpeningHoursForDay
Objekt für ein bestimmtes Datum zurück. Es sucht nach einer Ausnahme an diesem Tag und gibt andernfalls die Öffnungszeiten basierend auf dem regulären Zeitplan zurück.
$ openingHours -> forDate ( new DateTime ( ' 2016-12-25 ' ));
OpeningHours::exceptions(): SpatieOpeningHoursOpeningHoursForDay[]
Gibt ein Array aller OpeningHoursForDay
Objekte für Ausnahmen zurück, verschlüsselt durch eine Ymd
Datumszeichenfolge.
$ openingHours -> exceptions ();
OpeningHours::isOpenOn(string $day): bool
Überprüft, ob das Geschäft an einem Tag im regulären Zeitplan geöffnet ist (enthält mindestens einen Öffnungszeitenbereich).
$ openingHours -> isOpenOn ( ' saturday ' );
Wenn es sich bei der angegebenen Zeichenfolge um ein Datum handelt, wird geprüft, ob es geöffnet ist (enthält mindestens einen Bereich von Öffnungszeiten), wobei sowohl der reguläre Tagesplan als auch mögliche Ausnahmen berücksichtigt werden.
$ openingHours -> isOpenOn ( ' 2020-09-03 ' );
$ openingHours -> isOpenOn ( ' 09-03 ' ); // If year is omitted, current year is used instead
OpeningHours::isClosedOn(string $day): bool
Überprüft, ob das Geschäft an einem Tag im regulären Zeitplan geschlossen ist.
$ openingHours -> isClosedOn ( ' sunday ' );
OpeningHours::isOpenAt(DateTimeInterface $dateTime): bool
Überprüft, ob das Geschäft an einem bestimmten Tag und zu einer bestimmten Uhrzeit geöffnet ist.
$ openingHours -> isOpenAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isClosedAt(DateTimeInterface $dateTime): bool
Überprüft, ob das Geschäft an einem bestimmten Tag und zu einer bestimmten Uhrzeit geschlossen ist.
$ openingHours -> isClosedAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isOpen(): bool
Überprüft, ob das Geschäft gerade geöffnet ist.
$ openingHours -> isOpen ();
OpeningHours::isClosed(): bool
Überprüft, ob das Geschäft gerade geschlossen ist.
$ openingHours -> isClosed ();
OpeningHours::isAlwaysOpen(): bool
Überprüft, ob das Geschäft rund um die Uhr geöffnet ist, keine Ausnahmen und keine Filter hat.
if ( $ openingHours -> isAlwaysOpen ()) {
echo ' This business is open all day long every day. ' ;
}
OpeningHours::isAlwaysClosed(): bool
Überprüft, ob das Geschäft nie geöffnet ist, keine Ausnahmen und keine Filter hat.
OpeningHours
akzeptiert leere Arrays oder Listen, wobei jeder Wochentag ohne Vorurteile leer ist.
Wenn es sich in Ihrer Domäne nicht um einen gültigen Status handelt, sollten Sie diese Methode verwenden, um eine Ausnahme auszulösen oder einen Fehler anzuzeigen.
if ( $ openingHours -> isAlwaysClosed ()) {
throw new RuntimeException ( ' Opening hours missing ' );
}
OpeningHours::nextOpen
OpeningHours::nextOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
Gibt die nächste geöffnete DateTime
von der angegebenen DateTime
( $dateTime
oder von jetzt an, wenn dieser Parameter null ist oder weggelassen wird) zurück.
Wenn ein DateTimeImmutable
-Objekt übergeben wird, wird ein DateTimeImmutable
-Objekt zurückgegeben.
Setzen Sie $searchUntil
auf ein Datum, um eine Ausnahme auszulösen, wenn vor diesem Zeitpunkt keine offene Zeit gefunden werden kann.
Setzen Sie $cap
auf ein Datum, sodass $cap
zurückgegeben wird, wenn vor diesem Zeitpunkt keine Öffnungszeit gefunden werden kann.
$ openingHours -> nextOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::nextClose
OpeningHours::nextClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
Gibt DateTime
des nächsten Schließens von der angegebenen DateTime
( $dateTime
oder von jetzt an, wenn dieser Parameter null ist oder weggelassen wird) zurück.
Wenn ein DateTimeImmutable
-Objekt übergeben wird, wird ein DateTimeImmutable
-Objekt zurückgegeben.
Setzen Sie $searchUntil
auf ein Datum, um eine Ausnahme auszulösen, wenn vor diesem Zeitpunkt keine geschlossene Zeit gefunden werden kann.
Setzen Sie $cap
auf ein Datum, sodass $cap
zurückgegeben wird, wenn vor diesem Zeitpunkt keine geschlossene Zeit gefunden werden kann.
Wenn der Zeitplan immer geöffnet oder immer geschlossen ist, ist keine Statusänderung zu finden und daher wird nextOpen
(aber auch previousOpen
, nextClose
und previousClose
) ein MaximumLimitExceeded
auslösen. Sie können es abfangen und entsprechend reagieren oder Sie können die Methoden isAlwaysOpen
/ isAlwaysClosed
verwenden, um es vorherzusehen solchen Fall.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::previousOpen
OpeningHours::previousOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
Gibt die vorherige offene DateTime
von der angegebenen DateTime
( $dateTime
oder von jetzt an, wenn dieser Parameter null ist oder weggelassen wird) zurück.
Wenn ein DateTimeImmutable
-Objekt übergeben wird, wird ein DateTimeImmutable
-Objekt zurückgegeben.
Setzen Sie $searchUntil
auf ein Datum, um eine Ausnahme auszulösen, wenn nach diesem Zeitpunkt keine offene Zeit gefunden werden kann.
Setzen Sie $cap
auf ein Datum, sodass $cap
zurückgegeben wird, wenn nach diesem Zeitpunkt keine Öffnungszeit mehr gefunden werden kann.
$ openingHours -> previousOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::previousClose
OpeningHours::previousClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
Gibt DateTime
des vorherigen Abschlusses von der angegebenen DateTime
( $dateTime
oder von jetzt an, wenn dieser Parameter null ist oder weggelassen wird) zurück.
Wenn ein DateTimeImmutable
-Objekt übergeben wird, wird ein DateTimeImmutable
-Objekt zurückgegeben.
Setzen Sie $searchUntil
auf ein Datum, um eine Ausnahme auszulösen, wenn nach diesem Zeitpunkt keine geschlossene Zeit gefunden werden kann.
Setzen Sie $cap
auf ein Datum, sodass $cap
zurückgegeben wird, wenn nach diesem Zeitpunkt keine geschlossene Zeit gefunden werden kann.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::diffInOpenHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die Offenzeit (Anzahl der Stunden als Gleitkommazahl) zwischen zwei Daten/Uhrzeiten zurück.
$ openingHours -> diffInOpenHours ( new DateTime ( ' 2016-12-24 11:00:00 ' ), new DateTime ( ' 2016-12-24 16:34:25 ' ));
OpeningHours::diffInOpenMinutes(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die Offenzeit (Anzahl der Minuten als Gleitkommazahl) zwischen zwei Daten/Uhrzeiten zurück.
OpeningHours::diffInOpenSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die Offenzeit (Anzahl der Sekunden als Gleitkommazahl) zwischen zwei Datums-/Zeitangaben zurück.
OpeningHours::diffInClosedHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die geschlossene Zeit (Anzahl der Stunden als Gleitkommazahl) zwischen zwei Daten/Uhrzeiten zurück.
$ openingHours -> diffInClosedHours ( new DateTime ( ' 2016-12-24 11:00:00 ' ), new DateTime ( ' 2016-12-24 16:34:25 ' ));
OpeningHours::diffInClosedMinutes(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die geschlossene Zeit (Anzahl der Minuten als Gleitkommazahl) zwischen zwei Daten/Uhrzeiten zurück.
OpeningHours::diffInClosedSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Gibt die geschlossene Zeit (Anzahl der Sekunden als Gleitkommazahl) zwischen zwei Daten/Uhrzeiten zurück.
OpeningHours::currentOpenRange(DateTimeInterface $dateTime) : false | TimeRange
Gibt eine SpatieOpeningHoursTimeRange
Instanz des aktuellen Öffnungsbereichs zurück, wenn das Geschäft geöffnet ist, und false, wenn das Geschäft geschlossen ist.
$ range = $ openingHours -> currentOpenRange ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
if ( $ range ) {
echo " It's open since " . $ range -> start (). "n" ;
echo " It will close at " . $ range -> end (). "n" ;
} else {
echo " It's closed " ;
}
Die Methoden start()
und end()
geben SpatieOpeningHoursTime
Instanzen zurück. Aus einem Datum erstellte Time
können mit Datumsinformationen formatiert werden. Dies ist nützlich für Bereiche, die über Mitternacht hinauslaufen:
$ period = $ openingHours -> currentOpenRange ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
if ( $ period ) {
echo " It's open since " . $ period -> start ()-> format ( ' D Gh ' ). "n" ;
echo " It will close at " . $ period -> end ()-> format ( ' D Gh ' ). "n" ;
} else {
echo " It's closed " ;
}
OpeningHours::currentOpenRangeStart(DateTimeInterface $dateTime) : false | DateTime
Gibt eine DateTime
Instanz des Datums und der Uhrzeit zurück, seit das Geschäft geöffnet ist, wenn das Geschäft geöffnet ist, und false, wenn das Geschäft geschlossen ist.
Hinweis: Das Datum kann der Vortag sein, wenn Sie Nachtbereiche verwenden.
$ date = $ openingHours -> currentOpenRangeStart ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
if ( $ date ) {
echo " It's open since " . $ date -> format ( ' H:i ' );
} else {
echo " It's closed " ;
}
OpeningHours::currentOpenRangeEnd(DateTimeInterface $dateTime) : false | DateTime
Gibt eine DateTime
Instanz des Datums und der Uhrzeit zurück, bis zu der das Geschäft geöffnet sein wird, wenn das Geschäft geöffnet ist, und false, wenn das Geschäft geschlossen ist.
Hinweis: Das Datum kann der nächste Tag sein, wenn Sie Nachtbereiche verwenden.
$ date = $ openingHours -> currentOpenRangeEnd ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
if ( $ date ) {
echo " It will close at " . $ date -> format ( ' H:i ' );
} else {
echo " It's closed " ;
}
OpeningHours::createFromStructuredData(array|string $data, $timezone = null, $outputTimezone = null): SpatieOpeningHoursOpeningHours
Statische Factory-Methode zum Füllen des Satzes mit einem https://schema.org/OpeningHoursSpecification-Array oder einer JSON-Zeichenfolge.
dayOfWeek
unterstützt Arrays von Tagesnamen (im Google-Stil) oder Arrays von Tages-URLs (offizielle schema.org-Spezifikation).
$ openingHours = OpeningHours:: createFromStructuredData ( ' [
{
"@type": "OpeningHoursSpecification",
"opens": "08:00",
"closes": "12:00",
"dayOfWeek": [
"https://schema.org/Monday",
"https://schema.org/Tuesday",
"https://schema.org/Wednesday",
"https://schema.org/Thursday",
"https://schema.org/Friday"
]
},
{
"@type": "OpeningHoursSpecification",
"opens": "14:00",
"closes": "18:00",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
]
},
{
"@type": "OpeningHoursSpecification",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2023-12-25",
"validThrough": "2023-12-25"
}
] ' );
OpeningHours::asStructuredData(strinf $format = 'H:i', string|DateTimeZone $timezone) : array
Gibt eine OpeningHoursSpecification als Array zurück.
$ openingHours -> asStructuredData ();
$ openingHours -> asStructuredData ( ' H:i:s ' ); // Customize time format, could be 'h:i a', 'G:i', etc.
$ openingHours -> asStructuredData ( ' H:iP ' , ' -05:00 ' ); // Add a timezone
// Timezone can be numeric or string like "America/Toronto" or a DateTimeZone instance
// But be careful, the time is arbitrary applied on 1970-01-01, so it does not handle daylight
// saving time, meaning Europe/Paris is always +01:00 even in summer time.
SpatieOpeningHoursOpeningHoursForDay
Diese Klasse ist schreibgeschützt. Es implementiert ArrayAccess
, Countable
und IteratorAggregate
sodass Sie die Liste der TimeRange
s auf Array-ähnliche Weise verarbeiten können.
SpatieOpeningHoursTimeRange
Wertobjekt, das einen Zeitraum mit einer Start- und einer Endzeit beschreibt. Kann in einen String im H:iH:i
-Format umgewandelt werden.
SpatieOpeningHoursTime
Wertobjekt, das einen einzelnen Zeitpunkt beschreibt. Kann in einen String im H:i
-Format umgewandelt werden.
Sie können das OpenStreetMap-Format mit osm-opening-hours in OpeningHours
-Objekt konvertieren (danke an mgrundkoetter).
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
composer test
Weitere Informationen finden Sie unter BEITRAGEN.
Wenn Sie einen Sicherheitsfehler gefunden haben, senden Sie bitte eine E-Mail an [email protected], anstatt den Issue-Tracker zu verwenden.
Es steht Ihnen frei, dieses Paket zu verwenden, aber wenn es in Ihre Produktionsumgebung gelangt, würden wir uns sehr freuen, wenn Sie uns eine Postkarte aus Ihrer Heimatstadt schicken und erwähnen, welches unserer Pakete Sie verwenden.
Unsere Adresse lautet: Spatie, Kruikstraat 22, 2018 Antwerpen, Belgien.
Wir veröffentlichen alle erhaltenen Postkarten auf unserer Firmenwebsite.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.