fyre/period

v3.0.3 2024-06-29 02:14 UTC

This package is auto-updated.

Last update: 2024-09-29 02:49:48 UTC


README

FyrePeriod 是一个免费的、开源的 PHP 日期周期库。

目录

安装

使用 Composer

composer require fyre/period

在 PHP 中

use Fyre\Period\Period;
use Fyre\Period\PeriodCollection;

周期

  • $start 是一个 DateTime 或表示开始日期的字符串。
  • $end 是一个 DateTime 或表示结束日期的字符串。
  • $granularity 是表示粒度的字符串,可以是以下之一:"year", "month", "day", "hour", "minute" 或 "second",默认为 "day"。
  • $excludeBoundaries 是表示排除边界的字符串,可以是以下之一:"none", "start", "end" 或 "both",默认为 "none"。
$period = new Period($start, $end, $granularity, $excludeBoundaries);

Period 是一个 Iterator 的实现,可以在 foreach 循环中使用。

foreach ($period AS $date) { }

包含

判断此周期是否包含另一个 Period

  • $other 是要比较的 Period
$contains = $period->contains($other);

对称差

获取周期之间的对称差。

  • $other 是要比较的 Period
$diffSymmetric = $period->diffSymmetric($other);

此方法将返回一个新的 PeriodCollection

结束

获取结束日期。

$end = $period->end();

此方法将返回一个 DateTime

结束等于

确定此周期是否在给定的日期结束。

$endEquals = $period->endEquals($date);

结束之后

确定此周期是否在给定的日期之后结束。

$endsAfter = $period->endsAfter($date);

结束之后或等于

确定此周期是否在给定的日期或之后结束。

$endsAfterOrEquals = $period->endsAfterOrEquals($date);

结束之前

确定此周期是否在给定的日期之前结束。

$endsBefore = $period->endsBefore($date);

结束之前或等于

确定此周期是否在给定的日期或之前结束。

$endsBeforeOrEquals = $period->endsBeforeOrEquals($date);

等于

确定此周期是否等于另一个 Period。

  • $other 是要比较的 Period
$equals = $period->equals($other);

间隙

获取周期之间的间隙。

  • $other 是要比较的 Period
$gap = $period->gap($other);

此方法将返回一个新的 Period,如果没有间隙则返回 null

粒度

获取粒度。

$granularity = $period->granularity();

包含结束

获取包含的结束日期。

$includedEnd = $period->includedEnd();

此方法将返回一个 DateTime

包含开始

获取包含的开始日期。

$includedStart = $period->includedStart();

此方法将返回一个 DateTime

包含结束

确定此 Period 是否包含结束日期。

$includesEnd = $period->includesEnd();

包含

确定此周期是否包含给定的日期。

$includes = $period->includes($date);

包含开始

确定此 Period 是否包含开始日期。

$includesStart = $period->includesStart();

长度

获取周期的长度。

$length = $period->length();

重叠

获取周期之间的重叠。

  • $other 是要比较的 Period
$overlap = $period->overlap($other);

此方法将返回一个新的 Period,如果没有重叠则返回 null

所有重叠

获取所有周期之间的重叠。

$overlapAll = $period->overlapAll(...$others);

此方法将返回一个新的 Period,如果没有重叠则返回 null

任何重叠

获取任何周期之间的重叠。

$overlapAny = $period->overlapAny(...$others);

此方法将返回一个新的 PeriodCollection

与...重叠

确定此周期是否与另一个 Period 重叠。

  • $other 是要比较的 Period
$overlapsWith = $period->overlapsWith($other);

更新

创建一个长度相同的新周期。

$renewed = $period->renew();

此方法将返回一个新的 Period

开始

获取开始日期。

$start = $period->start();

此方法将返回一个 DateTime

开始等于

确定此周期是否在给定的日期开始。

$startEquals = $period->startEquals($date);

开始之后

判断该时间段是否在给定日期之后开始。

$startsAfter = $period->startsAfter($date);

开始于或等于

判断该时间段是否在给定日期或之后开始。

$startsAfterOrEquals = $period->startsAfterOrEquals($date);

开始于之前

判断该时间段是否在给定日期之前开始。

$startsBefore = $period->startsBefore($date);

开始于之前或等于

判断该时间段是否在给定日期或之前开始。

$startsBeforeOrEquals = $period->startsBeforeOrEquals($date);

减去

获取时间段之间的逆重叠。

  • $other 是要比较的 Period
$subtract = $period->subtract($other);

此方法将返回一个新的 PeriodCollection

全部减去

获取所有时间段之间的逆重叠。

$subtractAll = $period->subtractAll(...$others);

此方法将返回一个新的 PeriodCollection

接触

判断该时间段是否与另一个时间段接触。

  • $other 是要比较的 Period
$touches = $period->touches($other);

周期集合

所有提供的参数都将用作集合中的时间段。

$collection = new PeriodCollection(...$periods);

PeriodCollection是实现了一个Iterator,可以在foreach循环中使用。

foreach ($collection AS $period) { }

添加

将时间段添加到集合中。

所有提供的参数都将用作要添加到集合中的时间段。

$added = $collection->add(...$periods);

此方法将返回一个新的PeriodCollection

边界

获取集合的边界。

$boundaries = $collection->boundaries();

此方法将返回一个新的Period,如果集合为空则返回null

间隙

获取集合中时间段之间的间隙。

$gaps = $collection->gaps();

此方法将返回一个新的PeriodCollection

交集

将时间段与集合中的每个时间段进行交集。

  • $period是要比较的Period
$intersect = $collection->intersect($period);

此方法将返回一个新的PeriodCollection

所有重叠

获取所有集合的重叠。

所有提供的参数都将用作比较的集合。

$overlapAll = $collection->overlapAll(...$others);

此方法将返回一个新的PeriodCollection

排序

对时间段进行排序。

$sorted = $collection->sort();

此方法将返回一个新的PeriodCollection

减去

获取集合的逆重叠。

  • $others是要比较的PeriodCollection
$subtract = $collection->subtract($others);

此方法将返回一个新的PeriodCollection

唯一

过滤时间段以去除重复项。

$unique = $collection->unique();

此方法将返回一个新的PeriodCollection