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 ' ); // false
Itu 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 ' ); // false
Itu 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 evening
Dalam 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:00
Baca 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.
SpatieOpeningHoursOpeningHours
OpeningHours::create(array $data, $timezone = null, $toutputTimezone = null): SpatieOpeningHoursOpeningHours
Metode 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): bool
Memeriksa 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): bool
Memeriksa apakah bisnis tutup pada suatu hari dalam jadwal reguler.
$ openingHours -> isClosedOn ( ' sunday ' );
OpeningHours::isOpenAt(DateTimeInterface $dateTime): bool
Memeriksa apakah bisnis buka pada hari tertentu, pada waktu tertentu.
$ openingHours -> isOpenAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isClosedAt(DateTimeInterface $dateTime): bool
Memeriksa apakah bisnis tutup pada hari tertentu, pada waktu tertentu.
$ openingHours -> isClosedAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isOpen(): bool
Memeriksa apakah bisnis tersebut buka saat ini.
$ openingHours -> isOpen ();
OpeningHours::isClosed(): bool
Memeriksa apakah bisnis sedang tutup saat ini.
$ openingHours -> isClosed ();
OpeningHours::isAlwaysOpen(): bool
Memeriksa 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(): bool
Memeriksa 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::nextOpen
OpeningHours::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::nextClose
OpeningHours::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::previousOpen
OpeningHours::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::previousClose
OpeningHours::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) : float
Mengembalikan 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) : float
Mengembalikan jumlah waktu buka (jumlah menit sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInOpenSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Mengembalikan jumlah waktu buka (jumlah detik sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInClosedHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Mengembalikan 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) : float
Mengembalikan jumlah waktu tertutup (jumlah menit sebagai angka mengambang) antara 2 tanggal/waktu.
OpeningHours::diffInClosedSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
Mengembalikan 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): SpatieOpeningHoursOpeningHours
Metode 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) : array
Mengembalikan 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.