fyre / period
日期周期库。
Requires
- fyre/datetime: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^10
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。
结束等于
确定此周期是否在给定的日期结束。
$date是要比较的 DateTime。
$endEquals = $period->endEquals($date);
结束之后
确定此周期是否在给定的日期之后结束。
$date是要比较的 DateTime。
$endsAfter = $period->endsAfter($date);
结束之后或等于
确定此周期是否在给定的日期或之后结束。
$date是要比较的 DateTime。
$endsAfterOrEquals = $period->endsAfterOrEquals($date);
结束之前
确定此周期是否在给定的日期之前结束。
$date是要比较的 DateTime。
$endsBefore = $period->endsBefore($date);
结束之前或等于
确定此周期是否在给定的日期或之前结束。
$date是要比较的 DateTime。
$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();
包含
确定此周期是否包含给定的日期。
$date是要比较的 DateTime。
$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。
开始等于
确定此周期是否在给定的日期开始。
$date是要比较的 DateTime。
$startEquals = $period->startEquals($date);
开始之后
判断该时间段是否在给定日期之后开始。
$date是要比较的 DateTime。
$startsAfter = $period->startsAfter($date);
开始于或等于
判断该时间段是否在给定日期或之后开始。
$date是要比较的 DateTime。
$startsAfterOrEquals = $period->startsAfterOrEquals($date);
开始于之前
判断该时间段是否在给定日期之前开始。
$date是要比较的 DateTime。
$startsBefore = $period->startsBefore($date);
开始于之前或等于
判断该时间段是否在给定日期或之前开始。
$date是要比较的 DateTime。
$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。