Dengan spatie/opening-hours Anda membuat objek yang menjelaskan jam buka bisnis, yang dapat Anda kueri open atau closed pada hari atau tanggal tertentu, atau gunakan untuk menyajikan waktu per hari.
spatie/opening-hours dapat digunakan langsung di Carbon berkat cmixin/waktu bisnis sehingga Anda dapat memanfaatkan fitur jam buka langsung pada objek tanggal yang disempurnakan.
Satu set jam buka dibuat dengan memasukkan jadwal reguler, dan daftar pengecualian.
// 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" ;
}Objek dapat dikueri selama satu hari dalam seminggu, yang akan mengembalikan hasil berdasarkan jadwal reguler:
// Open on Mondays:
$ openingHours -> isOpenOn ( ' monday ' ); // true
// Closed on Sundays:
$ openingHours -> isOpenOn ( ' sunday ' ); // falseItu juga dapat ditanyakan untuk tanggal dan waktu tertentu:
// 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 ' ); // falseItu juga dapat mengembalikan susunan jam buka selama seminggu atau sehari:
// 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 ();Pada konstruksi, Anda dapat menyetel tanda untuk waktu luapan dalam beberapa hari. Misalnya, untuk klub malam yang buka hingga jam 3 pagi pada hari Jumat dan Sabtu:
$ openingHours = Spatie OpeningHours OpeningHours:: create ([
' overflow ' => true ,
' friday ' => [ ' 20:00-03:00 ' ],
' saturday ' => [ ' 20:00-03:00 ' ],
], null );Hal ini memungkinkan API untuk menelusuri data hari sebelumnya untuk memeriksa apakah jam buka buka dari rentang waktunya.
Anda dapat menambahkan data dalam definisi lalu mengambilnya:
$ 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 eveningDalam contoh di atas, data adalah string tetapi dapat berupa nilai apa pun. Jadi, Anda dapat menyematkan beberapa properti dalam sebuah array.
Untuk kemudahan struktur, pasangan data-jam dapat berupa array yang sepenuhnya asosiatif, sehingga contoh di atas setara dengan contoh berikut:
$ 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 ' ,
],
],
]); Anda dapat menggunakan pemisah to menentukan beberapa hari sekaligus, untuk seminggu atau untuk pengecualian:
$ 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 ' ,
],
],
]);Alat struktur terakhir adalah filter, yang memungkinkan Anda meneruskan penutupan (atau referensi fungsi/metode yang dapat dipanggil) yang menggunakan tanggal sebagai parameter dan mengembalikan pengaturan untuk tanggal tertentu.
$ 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
},
],
]); Jika callable ditemukan di properti "exceptions" , maka akan ditambahkan secara otomatis ke filter sehingga Anda dapat menggabungkan filter dan pengecualian keduanya dalam larik pengecualian . Filter pertama yang mengembalikan nilai non-null akan didahulukan dari filter berikutnya dan array filter didahulukan dari filter di dalam array pengecualian .
Peringatan: Kami akan mengulang semua filter untuk setiap tanggal di mana kami perlu mengambil jam buka dan tidak dapat mempredikat atau menyimpan hasil dalam cache (bisa berupa fungsi acak) jadi Anda harus berhati-hati dengan filter, terlalu banyak filter, atau proses panjang di dalam filter dapat memberikan dampak yang signifikan terhadap kinerja.
Itu juga dapat mengembalikan DateTime buka atau tutup berikutnya dari DateTime tertentu.
// 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:00Baca bagian penggunaan untuk api selengkapnya.
Spatie adalah agen desain web yang berbasis di Antwerp, Belgia. Anda akan menemukan ikhtisar semua proyek sumber terbuka kami di situs web kami.
Kami menginvestasikan banyak sumber daya untuk menciptakan paket sumber terbuka terbaik di kelasnya. Anda dapat mendukung kami dengan membeli salah satu produk berbayar kami.
Kami sangat menghargai Anda mengirimi kami kartu pos dari kota asal Anda, yang menyebutkan paket kami mana yang Anda gunakan. Anda akan menemukan alamat kami di halaman kontak kami. Kami mempublikasikan semua kartu pos yang diterima di dinding kartu pos virtual kami.
Anda dapat menginstal paket melalui composer:
composer require spatie/opening-hours Paket ini hanya boleh digunakan melalui kelas OpeningHours . Ada juga tiga kelas objek nilai yang digunakan secara keseluruhan, Time , yang mewakili satu waktu, TimeRange , yang mewakili periode dengan awal dan akhir, dan openingHoursForDay , yang mewakili sekumpulan TimeRange yang tidak boleh tumpang tindih.
SpatieOpeningHoursOpeningHoursOpeningHours::create(array $data, $timezone = null, $toutputTimezone = null): SpatieOpeningHoursOpeningHoursMetode pabrik statis untuk mengisi set jam buka.
$ openingHours = OpeningHours:: create ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]); Jika tidak ada zona waktu yang ditentukan, OpeningHours hanya akan menganggap Anda selalu meneruskan objek DateTime yang sudah memiliki zona waktu yang cocok dengan jadwal Anda.
Jika Anda meneruskan $timezone sebagai argumen kedua atau melalui kunci array 'timezone' (bisa berupa objek DateTimeZone atau string ), maka tanggal yang diteruskan akan dikonversi ke zona waktu ini di awal setiap metode, lalu jika metode ini mengembalikan objek tanggal (seperti nextOpen , nextClose , previousOpen , previousClose , currentOpenRangeStart atau currentOpenRangeEnd ), kemudian dikonversi kembali ke zona waktu asli sebelum keluaran sehingga objek dapat mencerminkan momen dalam waktu lokal pengguna sementara OpeningHours dapat tetap menggunakan zona waktu bisnisnya sendiri.
Alternatifnya, Anda juga dapat menentukan zona waktu input dan output (menggunakan argumen kedua dan ketiga) atau menggunakan array:
$ 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 Demi keamanan, membuat objek OpeningHours dengan rentang yang tumpang tindih akan menimbulkan pengecualian kecuali Anda meneruskan 'overflow' => true, dalam definisi array jam buka. Anda juga dapat menggabungkannya secara eksplisit.
$ 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 );Tidak semua hari bersifat wajib, jika ada hari yang terlewat maka akan ditetapkan tutup.
OpeningHours::fill(array $data): SpatieOpeningHoursOpeningHours Sama seperti create , tetapi tidak statis.
$ openingHours = ( new OpeningHours )-> fill ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]);OpeningHours::forWeek(): SpatieOpeningHoursOpeningHoursForDay[] Mengembalikan array objek OpeningHoursForDay untuk minggu biasa.
$ openingHours -> forWeek ();OpeningHours::forWeekCombined(): array Mengembalikan serangkaian hari. Kunci array adalah hari pertama dengan jam yang sama, nilai array adalah hari yang memiliki jam kerja dan objek OpeningHoursForDay yang sama.
$ openingHours -> forWeekCombined ();OpeningHours::forWeekConsecutiveDays(): array Mengembalikan serangkaian hari yang digabungkan, hari yang berdekatan dengan jam yang sama. Kunci array adalah hari pertama dengan jam yang sama, nilai array adalah hari yang memiliki jam kerja dan objek OpeningHoursForDay yang sama.
Peringatan : hari berturut-turut dihitung dari Senin sampai Minggu tanpa perulangan (Senin tidak berturut-turut sampai Minggu) tidak peduli urutan hari pada data awal.
$ openingHours -> forWeekConsecutiveDays ();OpeningHours::forDay(string $day): SpatieOpeningHoursOpeningHoursForDay Mengembalikan objek OpeningHoursForDay untuk hari biasa. Suatu hari adalah rangkaian huruf kecil dari nama hari dalam bahasa Inggris.
$ openingHours -> forDay ( ' monday ' );OpeningHours::forDate(DateTimeInterface $dateTime): SpatieOpeningHoursOpeningHoursForDay Mengembalikan objek OpeningHoursForDay untuk tanggal tertentu. Ini mencari pengecualian pada hari itu, dan sebaliknya ia mengembalikan jam buka berdasarkan jadwal reguler.
$ openingHours -> forDate ( new DateTime ( ' 2016-12-25 ' ));OpeningHours::exceptions(): SpatieOpeningHoursOpeningHoursForDay[] Mengembalikan array dari semua objek OpeningHoursForDay untuk pengecualian, yang dikunci oleh string tanggal Ymd .
$ openingHours -> exceptions ();OpeningHours::isOpenOn(string $day): boolMemeriksa apakah bisnis buka (memiliki setidaknya 1 rentang jam buka) pada hari dalam jadwal reguler.
$ openingHours -> isOpenOn ( ' saturday ' );Jika string yang diberikan adalah tanggal, ia akan memeriksa apakah string tersebut buka (berisi setidaknya 1 rentang jam buka) dengan mempertimbangkan jadwal hari biasa dan kemungkinan pengecualian.
$ openingHours -> isOpenOn ( ' 2020-09-03 ' );
$ openingHours -> isOpenOn ( ' 09-03 ' ); // If year is omitted, current year is used instead OpeningHours::isClosedOn(string $day): boolMemeriksa apakah bisnis tutup pada suatu hari dalam jadwal reguler.
$ openingHours -> isClosedOn ( ' sunday ' );OpeningHours::isOpenAt(DateTimeInterface $dateTime): boolMemeriksa apakah bisnis buka pada hari tertentu, pada waktu tertentu.
$ openingHours -> isOpenAt ( new DateTime ( ' 2016-26-09 20:00 ' ));OpeningHours::isClosedAt(DateTimeInterface $dateTime): boolMemeriksa apakah bisnis tutup pada hari tertentu, pada waktu tertentu.
$ openingHours -> isClosedAt ( new DateTime ( ' 2016-26-09 20:00 ' ));OpeningHours::isOpen(): boolMemeriksa apakah bisnis tersebut buka saat ini.
$ openingHours -> isOpen ();OpeningHours::isClosed(): boolMemeriksa apakah bisnis sedang tutup saat ini.
$ openingHours -> isClosed ();OpeningHours::isAlwaysOpen(): boolMemeriksa apakah bisnis buka 24/7, tidak ada pengecualian dan tidak ada filter.
if ( $ openingHours -> isAlwaysOpen ()) {
echo ' This business is open all day long every day. ' ;
}OpeningHours::isAlwaysClosed(): boolMemeriksa apakah bisnis tidak pernah dibuka, tidak memiliki pengecualian, dan tidak ada filter.
OpeningHours menerima array atau daftar kosong dengan setiap hari minggu kosong tanpa prasangka.
Jika status tersebut tidak valid di domain Anda, Anda harus menggunakan metode ini untuk memunculkan pengecualian atau menampilkan kesalahan.
if ( $ openingHours -> isAlwaysClosed ()) {
throw new RuntimeException ( ' Opening hours missing ' );
}OpeningHours::nextOpenOpeningHours::nextOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface` Mengembalikan DateTime terbuka berikutnya dari DateTime yang diberikan ( $dateTime atau mulai sekarang jika parameter ini null atau dihilangkan).
Jika objek DateTimeImmutable diteruskan, objek DateTimeImmutable dikembalikan.
Tetapkan $searchUntil ke tanggal untuk memberikan pengecualian jika tidak ada waktu buka yang dapat ditemukan sebelum momen ini.
Tetapkan $cap ke tanggal sehingga jika tidak ada waktu buka yang dapat ditemukan sebelum momen ini, $cap dikembalikan.
$ openingHours -> nextOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));OpeningHours::nextCloseOpeningHours::nextClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface` Mengembalikan DateTime penutupan berikutnya dari DateTime yang diberikan ( $dateTime atau mulai sekarang jika parameter ini null atau dihilangkan).
Jika objek DateTimeImmutable diteruskan, objek DateTimeImmutable dikembalikan.
Tetapkan $searchUntil ke tanggal untuk memberikan pengecualian jika tidak ada waktu tutup yang dapat ditemukan sebelum momen ini.
Tetapkan $cap ke tanggal sehingga jika tidak ada waktu tutup yang dapat ditemukan sebelum momen ini, $cap dikembalikan.
Jika jadwal selalu terbuka atau selalu ditutup, tidak ada perubahan keadaan yang ditemukan dan oleh karena itu nextOpen (tetapi juga previousOpen , nextClose dan previousClose ) akan memunculkan MaximumLimitExceeded Anda dapat menangkapnya dan bereaksi sesuai atau Anda dapat menggunakan metode isAlwaysOpen / isAlwaysClosed untuk mengantisipasi kasus seperti itu.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));OpeningHours::previousOpenOpeningHours::previousOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface` Mengembalikan DateTime terbuka sebelumnya dari DateTime yang diberikan ( $dateTime atau mulai sekarang jika parameter ini null atau dihilangkan).
Jika objek DateTimeImmutable diteruskan, objek DateTimeImmutable dikembalikan.
Setel $searchUntil ke tanggal untuk memberikan pengecualian jika tidak ada waktu buka yang dapat ditemukan setelah momen ini.
Tetapkan $cap ke tanggal sehingga jika tidak ada waktu buka setelah momen ini, $cap dikembalikan.
$ openingHours -> previousOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));OpeningHours::previousCloseOpeningHours::previousClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface` Mengembalikan DateTime penutupan sebelumnya dari DateTime yang diberikan ( $dateTime atau mulai sekarang jika parameter ini null atau dihilangkan).
Jika objek DateTimeImmutable diteruskan, objek DateTimeImmutable dikembalikan.
Setel $searchUntil ke tanggal untuk memberikan pengecualian jika tidak ada waktu tutup yang dapat ditemukan setelah momen ini.
Tetapkan $cap ke tanggal sehingga jika tidak ada waktu tutup yang dapat ditemukan setelah momen ini, $cap dikembalikan.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));OpeningHours::diffInOpenHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu buka (jumlah jam sebagai angka mengambang) antara 2 tanggal/waktu.
$ openingHours -> diffInOpenHours ( new DateTime ( ' 2016-12-24 11:00:00 ' ), new DateTime ( ' 2016-12-24 16:34:25 ' ));OpeningHours::diffInOpenMinutes(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu buka (jumlah menit sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInOpenSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu buka (jumlah detik sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInClosedHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu tutup (jumlah jam sebagai angka mengambang) antara 2 tanggal/waktu.
$ openingHours -> diffInClosedHours ( new DateTime ( ' 2016-12-24 11:00:00 ' ), new DateTime ( ' 2016-12-24 16:34:25 ' ));OpeningHours::diffInClosedMinutes(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu tertutup (jumlah menit sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInClosedSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : floatMengembalikan jumlah waktu tertutup (jumlah detik sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::currentOpenRange(DateTimeInterface $dateTime) : false | TimeRange Mengembalikan instance SpatieOpeningHoursTimeRange dari rentang terbuka saat ini jika bisnis buka, salah jika bisnis ditutup.
$ 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 " ;
} metode start() dan end() mengembalikan instance SpatieOpeningHoursTime . Contoh Time yang dibuat dari suatu tanggal dapat diformat dengan informasi tanggal. Ini berguna untuk rentang yang melebihi tengah malam:
$ 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 Mengembalikan instance DateTime tanggal dan waktu sejak bisnis buka jika bisnis buka, false jika bisnis tutup.
Catatan: tanggal bisa berupa hari sebelumnya jika menggunakan rentang malam.
$ 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 Mengembalikan instance DateTime dari tanggal dan waktu hingga bisnis akan buka jika bisnis buka, false jika bisnis tutup.
Catatan: tanggal bisa keesokan harinya jika menggunakan rentang malam.
$ 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): SpatieOpeningHoursOpeningHoursMetode pabrik statis untuk mengisi set dengan array https://schema.org/OpeningHoursSpecification atau string JSON.
dayOfWeek mendukung rangkaian nama hari (sesuai dengan Google) atau rangkaian URL hari (spesifikasi resmi skema.org).
$ 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) : arrayMengembalikan OpeningHoursSpecification sebagai array.
$ 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 Kelas ini dimaksudkan sebagai kelas baca-saja. Ini mengimplementasikan ArrayAccess , Countable dan IteratorAggregate sehingga Anda dapat memproses daftar TimeRange dengan cara seperti array.
SpatieOpeningHoursTimeRange Objek nilai menggambarkan suatu periode dengan waktu mulai dan waktu berakhir. Dapat dilemparkan ke string dalam format H:iH:i .
SpatieOpeningHoursTime Objek nilai menggambarkan satu waktu. Dapat dilemparkan ke string dalam format H:i .
Anda dapat mengonversi format OpenStreetMap ke objek OpeningHours menggunakan osm-opening-hours (terima kasih kepada mgrundkoetter)
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
composer test Silakan lihat KONTRIBUSI untuk rinciannya.
Jika Anda menemukan bug terkait keamanan, silakan kirim email ke [email protected] alih-alih menggunakan pelacak masalah.
Anda bebas menggunakan paket ini, namun jika paket ini masuk ke lingkungan produksi Anda, kami sangat menghargai Anda mengirimi kami kartu pos dari kota asal Anda, yang menyebutkan paket kami mana yang Anda gunakan.
Alamat kami adalah: Spatie, Kruikstraat 22, 2018 Antwerp, Belgia.
Kami mempublikasikan semua kartu pos yang diterima di situs web perusahaan kami.
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.