spatie/opening-hours
사용하면 업체의 영업 시간을 설명하는 개체를 생성할 수 있습니다. 이 개체를 사용하여 요일 또는 특정 날짜의 open
또는 closed
를 쿼리하거나 하루 시간을 표시하는 데 사용할 수 있습니다.
spatie/opening-hours
cmixin/business-time 덕분에 Carbon에서 직접 사용할 수 있으므로 향상된 날짜 개체에서 직접 영업 시간 기능을 활용할 수 있습니다.
영업시간 세트는 정규 일정과 예외 목록을 전달하여 생성됩니다.
// 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" ;
}
일주일 중 하루에 대해 객체를 쿼리할 수 있으며, 이는 정기적인 일정에 따라 결과를 반환합니다.
// Open on Mondays:
$ openingHours -> isOpenOn ( ' monday ' ); // true
// Closed on Sundays:
$ openingHours -> isOpenOn ( ' sunday ' ); // false
특정 날짜와 시간에 대해 쿼리할 수도 있습니다.
// 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
또한 일주일 또는 하루의 영업 시간 배열을 반환할 수도 있습니다.
// 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 ();
건설 중에는 며칠에 걸쳐 초과 시간에 대한 플래그를 설정할 수 있습니다. 예를 들어 금요일과 토요일에 오전 3시까지 영업하는 나이트클럽의 경우:
$ openingHours = Spatie OpeningHours OpeningHours:: create ([
' overflow ' => true ,
' friday ' => [ ' 20:00-03:00 ' ],
' saturday ' => [ ' 20:00-03:00 ' ],
], null );
이를 통해 API는 전날의 데이터를 더 자세히 조사하여 해당 시간 범위에서 영업 시간이 열려 있는지 확인할 수 있습니다.
정의에 데이터를 추가한 후 검색할 수 있습니다.
$ 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
위의 예에서 데이터는 문자열이지만 모든 종류의 값이 될 수 있습니다. 따라서 배열에 여러 속성을 포함할 수 있습니다.
구조의 편의를 위해 데이터-시간 쌍은 완전 연관 배열이 될 수 있으므로 위의 예는 다음과 엄격하게 동일합니다.
$ 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
지정할 수 있습니다.
$ 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 ' ,
],
],
]);
마지막 구조 도구는 필터입니다. 이를 통해 날짜를 매개변수로 사용하고 주어진 날짜에 대한 설정을 반환하는 클로저(또는 호출 가능한 함수/메서드 참조)를 전달할 수 있습니다.
$ 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
},
],
]);
호출 가능 항목이 "exceptions"
속성에 있으면 필터에 자동으로 추가되므로 예외 배열에서 필터와 예외를 모두 혼합할 수 있습니다. Null이 아닌 값을 반환하는 첫 번째 필터는 다음 필터보다 우선 순위를 가지며 필터 배열은 예외 배열 내부의 필터보다 우선합니다.
경고: 우리는 영업 시간을 검색해야 하는 각 날짜에 대해 모든 필터를 반복할 것이며 결과를 예측하거나 캐시할 수 없습니다(임의 함수일 수 있음). 따라서 필터, 너무 많은 필터 또는 필터 내부의 긴 프로세스에 주의해야 합니다. 성능에 큰 영향을 미칠 수 있습니다.
또한 지정된 DateTime
에서 다음 개시 또는 종료 DateTime
반환할 수도 있습니다.
// 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
전체 API에 대한 사용법 섹션을 읽어보세요.
Spatie는 벨기에 앤트워프에 본사를 둔 웹 디자인 에이전시입니다. 당사 웹사이트에서 당사의 모든 오픈 소스 프로젝트에 대한 개요를 확인할 수 있습니다.
우리는 동급 최고의 오픈 소스 패키지를 만드는 데 많은 리소스를 투자합니다. 유료 제품 중 하나를 구매하여 우리를 지원할 수 있습니다.
귀하가 사용하고 있는 당사 패키지를 언급하면서 귀하의 고향에서 엽서를 보내주셔서 진심으로 감사드립니다. 연락처 페이지에서 주소를 확인하실 수 있습니다. 우리는 수신된 모든 엽서를 가상 엽서 월에 게시합니다.
작곡가를 통해 패키지를 설치할 수 있습니다.
composer require spatie/opening-hours
패키지는 OpeningHours
클래스를 통해서만 사용해야 합니다. 또한 전체적으로 사용되는 세 가지 값 개체 클래스가 있습니다. Time
단일 시간을 나타내고, TimeRange
는 시작과 끝이 있는 기간을 나타내며, openingHoursForDay
는 중첩할 수 없는 TimeRange
집합을 나타냅니다.
SpatieOpeningHoursOpeningHours
OpeningHours::create(array $data, $timezone = null, $toutputTimezone = null): SpatieOpeningHoursOpeningHours
일련의 영업시간을 채우는 정적 팩토리 메소드입니다.
$ openingHours = OpeningHours:: create ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]);
시간대가 지정되지 않은 경우 OpeningHours
일정과 일치하는 시간대가 이미 있는 DateTime
개체를 항상 전달한다고 가정합니다.
$timezone
두 번째 인수로 전달하거나 배열 키 'timezone'
( DateTimeZone
객체 또는 string
일 수 있음)을 통해 전달하는 경우 전달된 날짜는 각 메서드 시작 시 이 시간대로 변환됩니다. 이 메소드는 날짜 객체(예: nextOpen
, nextClose
, previousOpen
, previousClose
, currentOpenRangeStart
또는 currentOpenRangeEnd
)를 반환한 다음 출력 전에 원래 시간대로 다시 변환되므로 객체는 다음을 반영할 수 있습니다. 사용자 현지 시간으로 시간을 표시하는 반면, OpeningHours
자체 비즈니스 시간대를 고수할 수 있습니다.
또는 입력 및 출력 시간대를 모두 지정하거나(두 번째 및 세 번째 인수 사용) 배열을 사용할 수도 있습니다.
$ 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
안전을 위해, 범위가 겹치는 OpeningHours
객체를 생성하면 영업시간 배열 정의에 'overflow' => true,
명시적으로 전달하지 않는 한 예외가 발생합니다. 명시적으로 병합할 수도 있습니다.
$ 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 );
모든 요일이 필수는 아니며, 하루가 누락되면 휴무로 설정됩니다.
OpeningHours::fill(array $data): SpatieOpeningHoursOpeningHours
create
와 동일하지만 정적이 아닙니다.
$ openingHours = ( new OpeningHours )-> fill ([
' monday ' => [ ' 09:00-12:00 ' , ' 13:00-18:00 ' ],
// ...
]);
OpeningHours::forWeek(): SpatieOpeningHoursOpeningHoursForDay[]
정규 주에 대한 OpeningHoursForDay
객체의 배열을 반환합니다.
$ openingHours -> forWeek ();
OpeningHours::forWeekCombined(): array
날짜 배열을 반환합니다. 배열 키는 근무 시간이 동일한 첫날이고, 배열 값은 근무 시간과 OpeningHoursForDay
개체가 동일한 요일입니다.
$ openingHours -> forWeekCombined ();
OpeningHours::forWeekConsecutiveDays(): array
동일한 시간을 갖는 인접한 날짜를 연결한 날짜의 배열을 반환합니다. 배열 키는 근무 시간이 동일한 첫날이고, 배열 값은 근무 시간과 OpeningHoursForDay
개체가 동일한 요일입니다.
경고 : 초기 데이터의 날짜 순서에 상관없이 월요일부터 일요일까지 반복 없이 연속된 날짜를 고려합니다(월요일은 일요일에 연속되지 않음).
$ openingHours -> forWeekConsecutiveDays ();
OpeningHours::forDay(string $day): SpatieOpeningHoursOpeningHoursForDay
정규 날짜에 대한 OpeningHoursForDay
객체를 반환합니다. 요일은 영어 요일 이름의 소문자 문자열입니다.
$ openingHours -> forDay ( ' monday ' );
OpeningHours::forDate(DateTimeInterface $dateTime): SpatieOpeningHoursOpeningHoursForDay
특정 날짜에 대한 OpeningHoursForDay
객체를 반환합니다. 해당 날짜에 예외가 있는지 찾아보고 그렇지 않은 경우 정규 일정에 따라 영업 시간을 반환합니다.
$ openingHours -> forDate ( new DateTime ( ' 2016-12-25 ' ));
OpeningHours::exceptions(): SpatieOpeningHoursOpeningHoursForDay[]
Ymd
날짜 문자열을 기준으로 예외에 대한 모든 OpeningHoursForDay
개체의 배열을 반환합니다.
$ openingHours -> exceptions ();
OpeningHours::isOpenOn(string $day): bool
해당 업체가 정규 일정에 따라 영업하는지(1개 이상의 영업 시간 범위 포함) 확인합니다.
$ openingHours -> isOpenOn ( ' saturday ' );
주어진 문자열이 날짜인 경우 정규 하루 일정과 가능한 예외를 모두 고려하여 영업 중인지(최소 1개 영업 시간 범위 포함) 확인합니다.
$ openingHours -> isOpenOn ( ' 2020-09-03 ' );
$ openingHours -> isOpenOn ( ' 09-03 ' ); // If year is omitted, current year is used instead
OpeningHours::isClosedOn(string $day): bool
정기휴일에 영업을 하지 않는지 확인합니다.
$ openingHours -> isClosedOn ( ' sunday ' );
OpeningHours::isOpenAt(DateTimeInterface $dateTime): bool
특정 날짜, 특정 시간에 업체가 영업하는지 확인합니다.
$ openingHours -> isOpenAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isClosedAt(DateTimeInterface $dateTime): bool
특정 날짜, 특정 시간에 영업이 종료되었는지 확인합니다.
$ openingHours -> isClosedAt ( new DateTime ( ' 2016-26-09 20:00 ' ));
OpeningHours::isOpen(): bool
현재 영업 중인 업체인지 확인합니다.
$ openingHours -> isOpen ();
OpeningHours::isClosed(): bool
현재 폐업한 업체인지 확인합니다.
$ openingHours -> isClosed ();
OpeningHours::isAlwaysOpen(): bool
업체가 연중무휴 24시간 영업하는지, 예외나 필터가 없는지 확인합니다.
if ( $ openingHours -> isAlwaysOpen ()) {
echo ' This business is open all day long every day. ' ;
}
OpeningHours::isAlwaysClosed(): bool
비즈니스가 영업을 하지 않는지, 예외가 없고 필터가 없는지 확인합니다.
OpeningHours
편견 없이 매주 요일이 비어 있는 빈 배열 또는 목록을 허용합니다.
도메인의 유효한 상태가 아닌 경우 이 방법을 사용하여 예외를 발생시키거나 오류를 표시해야 합니다.
if ( $ openingHours -> isAlwaysClosed ()) {
throw new RuntimeException ( ' Opening hours missing ' );
}
OpeningHours::nextOpen
OpeningHours::nextOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
지정된 DateTime
( $dateTime
또는 이 매개변수가 null이거나 생략된 경우 지금부터)에서 다음 열린 DateTime
반환합니다.
DateTimeImmutable
객체가 전달되면 DateTimeImmutable
객체가 반환됩니다.
이 순간 이전에 열려 있는 시간을 찾을 수 없는 경우 $searchUntil
날짜로 설정하여 예외를 발생시킵니다.
$cap
날짜로 설정하여 이 순간 이전에 오픈 시간을 찾을 수 없으면 $cap
반환됩니다.
$ openingHours -> nextOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::nextClose
OpeningHours::nextClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
주어진 DateTime
( $dateTime
또는 이 매개변수가 null이거나 생략된 경우 지금부터)에서 다음 마감 DateTime
반환합니다.
DateTimeImmutable
객체가 전달되면 DateTimeImmutable
객체가 반환됩니다.
이 순간 이전에 마감 시간을 찾을 수 없는 경우 $searchUntil
날짜로 설정하여 예외를 발생시킵니다.
$cap
날짜로 설정하여 이 순간 이전에 마감 시간을 찾을 수 없으면 $cap
반환됩니다.
일정이 항상 열려 있거나 항상 닫혀 있는 경우 발견할 상태 변경이 없으므로 nextOpen
(또한 previousOpen
, nextClose
및 previousClose
)은 MaximumLimitExceeded
를 발생시킵니다. 이를 포착하고 그에 따라 반응하거나 isAlwaysOpen
/ isAlwaysClosed
메소드를 사용하여 예상할 수 있습니다. 그런 경우.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::previousOpen
OpeningHours::previousOpen(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
지정된 DateTime
( $dateTime
또는 이 매개변수가 null이거나 생략된 경우 지금부터)에서 이전에 열린 DateTime
반환합니다.
DateTimeImmutable
객체가 전달되면 DateTimeImmutable
객체가 반환됩니다.
이 순간 이후에 열려 있는 시간을 찾을 수 없는 경우 $searchUntil
날짜로 설정하여 예외를 발생시킵니다.
$cap
날짜로 설정하면 이 순간 이후에 오픈 시간을 찾을 수 없으면 $cap
반환됩니다.
$ openingHours -> previousOpen ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::previousClose
OpeningHours::previousClose(
?DateTimeInterface $ dateTime = null ,
?DateTimeInterface $ searchUntil = null ,
?DateTimeInterface $ cap = null ,
) : DateTimeInterface`
지정된 DateTime
( $dateTime
또는 이 매개변수가 null이거나 생략된 경우 지금부터)에서 이전 마감 DateTime
반환합니다.
DateTimeImmutable
객체가 전달되면 DateTimeImmutable
객체가 반환됩니다.
이 순간 이후에 마감 시간을 찾을 수 없는 경우 $searchUntil
날짜로 설정하여 예외를 발생시킵니다.
$cap
날짜로 설정하면 이 순간 이후에 마감 시간을 찾을 수 없으면 $cap
반환됩니다.
$ openingHours -> nextClose ( new DateTime ( ' 2016-12-24 11:00:00 ' ));
OpeningHours::diffInOpenHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
두 날짜/시간 사이의 열린 시간(부동 숫자로 된 시간)을 반환합니다.
$ 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
두 날짜/시간 사이의 열린 시간(부동수로 분 수)을 반환합니다.
OpeningHours::diffInOpenSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
두 날짜/시간 사이의 열려 있는 시간(초 수를 부동 숫자로 표시)을 반환합니다.
OpeningHours::diffInClosedHours(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
두 날짜/시간 사이의 닫힌 시간(부동수로 된 시간)을 반환합니다.
$ 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
두 날짜/시간 사이의 닫힌 시간(부동수로 분 수)을 반환합니다.
OpeningHours::diffInClosedSeconds(DateTimeInterface $startDate, DateTimeInterface $endDate) : float
두 날짜/시간 사이의 닫힌 시간(부동 숫자로 된 초 수)을 반환합니다.
OpeningHours::currentOpenRange(DateTimeInterface $dateTime) : false | TimeRange
비즈니스가 열려 있으면 현재 공개 범위의 SpatieOpeningHoursTimeRange
인스턴스를 반환하고, 비즈니스가 닫혀 있으면 false를 반환합니다.
$ 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 " ;
}
start()
및 end()
메서드는 SpatieOpeningHoursTime
인스턴스를 반환합니다. 날짜로부터 생성된 Time
인스턴스는 날짜 정보로 형식화될 수 있습니다. 이는 자정을 초과하는 범위에 유용합니다.
$ 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
영업 중인 경우 영업 개시 이후 날짜 및 시간의 DateTime
인스턴스를 반환하고, 영업을 종료한 경우 false를 반환합니다.
참고: 야간 범위를 사용하는 경우 날짜는 전날이 될 수 있습니다.
$ 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
사업이 열려 있는 경우 영업을 시작하는 날짜와 시간의 DateTime
인스턴스를 반환하고, 사업이 닫혀 있는 경우 false를 반환합니다.
참고: 야간 범위를 사용하는 경우 날짜는 다음 날이 될 수 있습니다.
$ 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
https://schema.org/OpeningHoursSpecification 배열 또는 JSON 문자열로 세트를 채우는 정적 팩터리 메서드입니다.
dayOfWeek
요일 이름 배열(Google 스타일) 또는 요일 URL 배열(공식 Schema.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
openingHoursSpecification을 배열로 반환합니다.
$ 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
이 클래스는 읽기 전용입니다. ArrayAccess
, Countable
및 IteratorAggregate
구현하므로 배열과 유사한 방식으로 TimeRange
목록을 처리할 수 있습니다.
SpatieOpeningHoursTimeRange
시작 시간과 종료 시간으로 기간을 설명하는 값 개체입니다. H:iH:i
형식의 문자열로 캐스팅할 수 있습니다.
SpatieOpeningHoursTime
단일 시간을 설명하는 값 개체입니다. H:i
형식의 문자열로 캐스팅할 수 있습니다.
osm-opening-hours를 사용하여 OpenStreetMap 형식을 OpeningHours
객체로 변환할 수 있습니다(mgrundkoetter 덕분에)
최근 변경된 사항에 대한 자세한 내용은 CHANGELOG를 참조하세요.
composer test
자세한 내용은 CONTRIBUTING을 참조하세요.
보안 관련 버그를 발견한 경우 이슈 트래커를 사용하는 대신 [email protected]로 메일을 보내주세요.
이 패키지를 무료로 사용할 수 있지만, 귀하의 프로덕션 환경에 적용된다면 귀하가 사용하고 있는 패키지를 언급하면서 고향에서 엽서를 보내주시면 감사하겠습니다.
주소는 Spatie, Kruikstraat 22, 2018 Antwerp, Belgium입니다.
우리는 받은 모든 엽서를 회사 웹사이트에 게시합니다.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.