octava / opening-hours
用于查询和格式化一组营业时间的辅助工具,是 spatie/opening-hours 的克隆版
Requires
- php: >=5.5.9
Requires (Dev)
- phpunit/phpunit: 5.*
This package is auto-updated.
Last update: 2024-08-29 04:40:12 UTC
README
使用 spatie/opening-hours
,你可以创建一个描述企业营业时间的对象,你可以查询该对象在特定日期或具体日期的 open
或 closed
状态,或者使用它来显示每天的营业时间。
通过传递一个常规时间表和一组例外情况来创建一组营业时间。
$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' => [], ], ]);
对象可以查询一周中的某一天,这将根据常规时间表返回结果
// 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->isOpenAt(new DateTime('2016-12-25')); // false
它还可以返回一周或一天的营业时间数组
// OpeningHoursForDay object for the regular schedule $openingHours->forDay('monday'); // OpeningHoursForDay[] for the regular schedule, keyed by day name $openingHours->forWeek(); // OpeningHoursForDay object for a specific day $openingHours->forDate(new DateTime('2016-12-25')); // OpeningHoursForDay[] of all exceptions, keyed by date $openingHours->exceptions();
阅读使用部分以获取完整的 API。
Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里。
Postcardware
您可以使用此软件包(它是 MIT 许可),但如果它进入您的生产环境,您需要向我们发送一张来自您家乡的明信片,说明您正在使用我们的哪些软件包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
最佳明信片将被发布在我们的网站上的开源页面。
安装
您可以通过 composer 安装此软件包
composer require spatie/opening-hours
使用
应该只通过 OpeningHours
类来使用此软件包。还有三个值对象类在整个过程中使用,分别是 Time
,代表单个时间,TimeRange
,代表一个起始和结束的时间段,以及 openingHoursForDay
,代表一组不能重叠的 TimeRange
。
Spatie\OpeningHours\OpeningHours
OpeningHours::create(array $data): Spatie\OpeningHours\OpeningHours
静态工厂方法,用于填充营业时间集。
$openingHours = OpeningHours::create([ 'monday' => ['09:00-12:00', '13:00-18:00'], // ... ]);
并非所有天都是必需的,如果某天缺失,则将其设置为关闭。
OpeningHours::fill(array $data): Spatie\OpeningHours\OpeningHours
与 create
相同,但非静态。
$openingHours = (new OpeningHours)->fill([ 'monday' => ['09:00-12:00', '13:00-18:00'], // ... ]);
OpeningHours::forWeek(): Spatie\OpeningHours\OpeningHoursForDay[]
返回一组 OpeningHoursForDay
对象,用于常规的一周。
$openingHours->forWeek();
OpeningHours::forDay(string $day): Spatie\OpeningHours\OpeningHoursForDay
返回一个 OpeningHoursForDay
对象,用于常规的一天。一天是英语天名的小写字符串。
$openingHours->forDay('monday');
OpeningHours::forDate(DateTime $dateTime): Spatie\OpeningHours\OpeningHoursForDay
返回一个 OpeningHoursForDay
对象,用于特定日期。它会查找该天的异常,否则根据常规时间表返回营业时间。
$openingHours->forDate(new DateTime('2016-12-25'));
OpeningHours::exceptions(): Spatie\OpeningHours\OpeningHoursForDay[]
返回一个所有 OpeningHoursForDay
对象的数组,用于异常,键为 Y-m-d
日期字符串。
$openingHours->exceptions();
OpeningHours::isOpenOn(string $day): bool
检查企业在常规时间表中是否在特定的一天营业。
$openingHours->isOpenOn('saturday');
OpeningHours::isClosedOn(string $day): bool
检查企业在常规时间表中是否在特定的一天关闭。
$openingHours->isClosedOn('sunday');
OpeningHours::isOpenAt(DateTime $dateTime): bool
检查企业在特定的一天,特定的时间是否营业。
$openingHours->isOpenAt(new DateTime('2016-26-09 20:00'));
OpeningHours::isClosedAt(DateTime $dateTime): bool
检查企业在特定的一天,特定的时间是否关闭。
$openingHours->isClosedAt(new DateTime('2016-26-09 20:00'));
OpeningHours::isOpen(): bool
检查企业现在是否营业。
$openingHours->isOpen();
OpeningHours::isClosed(): bool
检查企业现在是否关闭。
$openingHours->isClosed();
Spatie\OpeningHours\OpeningHoursForDay
此类旨在作为只读。它实现了 ArrayAccess
、Countable
和 IteratorAggregate
接口,因此您可以以类似数组的方式处理 TimeRange
列表。
Spatie\OpeningHours\TimeRange
描述具有开始和结束时间的时期的值对象。可以转换为 H:i-H:i
格式的字符串。
Spatie\OpeningHours\Time
描述单个时间的值对象。可以转换为 H:i
格式的字符串。
更新日志
请参阅 更新日志 了解最近的变化。
测试
$ composer test
贡献
请参阅 贡献指南 了解详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件 freek@spatie.be 联系,而不是使用问题跟踪器。
鸣谢
关于 Spatie
Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里。
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。