octava/opening-hours

用于查询和格式化一组营业时间的辅助工具,是 spatie/opening-hours 的克隆版

1.0.3 2016-10-13 12:22 UTC

This package is auto-updated.

Last update: 2024-08-29 04:40:12 UTC


README

Latest Version on Packagist Software License Build Status SensioLabsInsight Quality Score StyleCI Total Downloads

使用 spatie/opening-hours,你可以创建一个描述企业营业时间的对象,你可以查询该对象在特定日期或具体日期的 openclosed 状态,或者使用它来显示每天的营业时间。

通过传递一个常规时间表和一组例外情况来创建一组营业时间。

$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

此类旨在作为只读。它实现了 ArrayAccessCountableIteratorAggregate 接口,因此您可以以类似数组的方式处理 TimeRange 列表。

Spatie\OpeningHours\TimeRange

描述具有开始和结束时间的时期的值对象。可以转换为 H:i-H:i 格式的字符串。

Spatie\OpeningHours\Time

描述单个时间的值对象。可以转换为 H:i 格式的字符串。

更新日志

请参阅 更新日志 了解最近的变化。

测试

$ composer test

贡献

请参阅 贡献指南 了解详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 freek@spatie.be 联系,而不是使用问题跟踪器。

鸣谢

关于 Spatie

Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。