cog / chrono-shifter
PHP 时间迭代器,用于在时间中移动
2.3
2019-02-26 16:12 UTC
Requires
- php: >= 5.5
Requires (Dev)
- instaclick/php-code-sniffer: 1.4.*
- pdepend/pdepend: 2.0.*
- phploc/phploc: 2.1.*
- phpmd/phpmd: 2.2.*
- phpunit/phpunit: 4.5.*
- sebastian/phpcpd: 2.0.*
- theseer/phpdox: 0.7.*
This package is not auto-updated.
Last update: 2021-11-30 19:08:58 UTC
README
ChronoShifter
使用公历在时间中导航的 PHP 框架。
内容
Shifters
Shifters 转换时间。
use COG\ChronoShifter\Direction\Increasing;
use COG\ChronoShifter\Period\Month;
use COG\ChronoShifter\Selector\Specific;
use COG\ChronoShifter\Shifter\ChronoShifter;
$shifter = new ChronoShifter(new Month('2015-01-05'), new Specific(new Increasing(), 5));
$shifter->next('2015-01-05'); // '2015-02-05'
Shifters 被设计成可组合和可扩展的。它们可以使用的组合数量很高,并且创建新的 shifters、方向、周期和选择器相对简单。
有更多 shifters 可用于组合或修改结果。
Periods
Periods 封装了在周期之间遍历的逻辑。Periods 常用于回答诸如“这个月的第一天星期几?”等问题。
use COG\ChronoShifter\Period\Month;
$month = new Month('2015-01-12');
$month->getStartDate(); // '2015-12-01'
$month->getEndDate(); // '2015-12-31'
$month->next();
$month->getStartDate(); // '2015-01-01'
$month->getEndDate(); // '2015-01-31'
IsoChronic period 表示时间段的等分。
use COG\ChronoShifter\Period\IsoChronic;
$iso = new IsoChronic('2015-01-11', '2015-01-11', 7);
$iso->getStartDate(); // '2015-01-11'
$iso->getEndDate(); // '2015-01-17'
$iso->next();
$iso->getStartDate(); // '2015-01-18'
$iso->getEndDate(); // '2015-01-24'
Evaluators
Evaluators 封装了有关日期的事实。
use COG\ChronoShifter\Evaluator\DayOfWeek;
$evaluator = new DayOfWeek(DayOfWeek::MONDAY);
$evaluator->is('2015-01-24'); // False
有 5 个用于日期基本事实的评估器,以及 AND/OR/NOT 逻辑评估器以支持以任何必要的方式组合评估器。
DayOfWeek($dayOfWeek : int)
Holiday($holidayProvider : HolidayProvider);
Weekday();
Weekend();
Workday($holidayProvider : HolidayProvider);
LogicalAnd($first : Evaluator, $second : Evaluator);
LogicalOr($first : Evaluator, $second : Evaluator);
LogicalNot($evaluator : Evaluator);
Selectors
Selectors 使用周期、方向和评估器来找到匹配项。
FirstOf($direction : Direction, $evaluator : Evaluator);
LastOf($direction : Direction, $evaluator : Evaluator);
Specific($direction : Direction, $number : int);
Directions
Directions 指定了如何在周期之间遍历。ChronoShifter 提供了两种方向:递增到未来或递减到过去。
Increasing();
Decreasing();
HolidayProvider
有许多方式可以表示假日,ChronoShifter 提供了一个接口,因此您可以将应用程序的假日逻辑插入其中。
use COG\ChronoShifter\HolidayProvider\ArrayHolidayProvider;
$holidayProvider = new ArrayHolidayProvider(array('2015-01-01'));
$holidayProvider->isHoliday('2014-12-31'); // False
$holidayProvider->isHoliday('2015-01-01'); // True