SDUI/daterange
提供一个包含起始时间和结束时间的DateTimeRange对象。还提供了创建范围和多个交集之间间隙的机会。
0.1.2
2021-11-03 13:35 UTC
Requires
- php: >= 7.2
Requires (Dev)
- nesbot/carbon: ^2.54
- phpunit/phpunit: ^9.5
README
使用
初始化
$beginsAt = new DateTime();
$endsAt = new DateTime();
$dateRange = new DateRange($beginsAt, $endsAt);
也可以使用Carbon对象初始化
new DateRange(Carbon::yesterday(), Carbon::now())
或从laravels辅助函数中初始化
new DateRange(today(), now())
间隙
可以找到范围范围和交集范围之间的间隙
/*
* Scope |0--------------------------24>
* Intersection
* Gaps {0 24}
*/
$start = Carbon::make('2021-11-25')->startOfDay();
$end = $start->clone()->endOfDay();
$scope = new DateRange($start, $end);
$gaps = DateRange::gaps($scope, []);
count($gaps); // 1
$gaps[0]->getStart(); // 2021-11-25 00:00:00
$gaps[0]->getEnd(); // 2021-11-25 23:59:59
更高级
/*
* Scope |0--------------------------24>
* Intersection [0 9]
* Gaps {9 24}
*/
$start = Carbon::make('2021-11-25')->startOfDay();
$end = $start->clone()->endOfDay();
$scope = new DateRange($start, $end);
$intersection = new DateRange($start->clone(), $start->clone()->setHour(9));
$gaps = DateRange::gaps($scope, [$intersection]);
count($gaps); // 1
$gaps[0]->getStart(); // 2021-11-25 00:00:00
$gaps[0]->getEnd(); // 2021-11-25 08:59:59