danoha / date-range
轻松处理日期范围。
v1.1.0
2017-06-08 06:43 UTC
Requires
- php: >=5.6
Requires (Dev)
- ext-xdebug: ^2.5
- nette/tester: ^1.7
This package is not auto-updated.
Last update: 2024-09-29 03:15:28 UTC
README
轻松处理日期范围。
安装
与composer配合使用最佳。👌
composer require danoha/date-range
如果您不使用composer或其自动加载,请require src/DateRange.php
和 src/DateRangeCollection.php
。
然后在您的代码中直接使用 \Danoha\DateRange
和 \Danoha\DateRangeCollection
类。
用法
处理日期范围
$range = new \Danoha\DateRange($from, $to); // any parameter can be NULL $range ->join($thatRange) ->intersect([ $from, $to ]) // methods accepting range also accept array ->contains($currentDate);
处理日期范围集合
$coll = new \Danoha\DateRangeCollection([ [ $from, $to ], // two items per range accepted [ 'from' => $from, 'to' => $to, ], // accepted too [ $from, NULL, ], // NULL means indefinite interval [ NULL, NULL, ], // and can be used on both sides ]); $coll ->join($thatCollection) ->intersect([ $range1, $range2 ]) // methods accepting collection also accept array ->contains($someRange);
获取您的范围
$coll->getRanges() === [ new \Danoha\DateRange($from, $to), new \Danoha\DateRange($from, NULL), ]; $coll->unwrap() === [ [ 'from' => $from, 'to' => $to, ], // every range has this exact format [ 'from' => $from, 'to' => NULL, ], // regardless of what was passed to constructor ... ];
接受集合的每个方法也接受范围数组(也可以是数组)
$coll->intersect( // another collection new \Danoha\DateRangeCollection([ ... ]) ); $coll->intersect([ // inlined collection (same as constructor) [ 'from' => $from, 'to' => $to, ] ]);
注意:确定的区间在两端都处理为包含。
可用的范围方法
注意:所有返回范围的方法都返回新实例。这意味着在相同的范围上调用 $range->join(...)
两次将创建两个实例,且它们都不包含两个连接的范围。
- getFrom - 返回范围中的第一个日期,
- getTo - 返回范围中的最后一个日期,
- unwrap - 获取数组格式的范围,
- intersect - 找出当前范围和给定范围的交集,
- overlaps - 测试当前范围和给定范围是否重叠,
- join - 找出当前范围和给定范围的共同范围,
- isRightAfter - 测试当前范围是否紧跟在给定范围之后,
- isRightBefore - 测试当前范围是否紧跟在给定范围之前,
- subtract - 返回当前范围和给定范围之间的差异集合,
- includes - 测试范围是否包含给定的日期或范围,
- includesDate - 测试范围是否包含给定的日期,
- includesRange - 测试范围是否包含给定的范围,
- equals - 测试当前范围是否等于给定范围。
可用的集合方法
注意:所有返回集合的方法都返回新实例。这意味着在相同的集合上调用 $coll->add(...)
两次将创建两个实例,且它们都不包含添加的范围。
- getRanges - 获取当前集合中的范围,
- unwrap - 以数组格式获取底层数日期范围,
- add - 将给定的范围添加到集合中,
- includes - 测试集合是否包含给定的日期或范围,
- join - 将给定的范围添加到当前集合中,并在可能的情况下连接当前集合中的范围,
- intersect - 计算与给定范围的全部交集,
- subtract - 从当前集合中减去给定的范围。