wiilianx7 / php-recurring
PHP 库,使处理周期性任务时获取日期更加容易。
v2.0.5
2023-01-25 20:05 UTC
Requires
- php: ^8.1
- nesbot/carbon: ^2.65
- tightenco/collect: ^9.0
Requires (Dev)
- ext-json: *
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-25 23:29:47 UTC
README
PHP 库,使处理周期性任务时获取日期更加容易。
安装
您可以通过composer安装此包
composer require wilianx7/php-recurring
基本用法
- 每天重复(永不结束)的配置
$recurringConfig = new RecurringConfig(); $recurringConfig->setStartDate(Carbon::create(2019, 12, 26, 8, 0, 0)) ->setFrequencyType(FrequencyTypeEnum::DAY()) ->setFrequencyInterval(1) ->setFrequencyEndType(FrequencyEndTypeEnum::NEVER()) ->setEndDate(Carbon::create(2019, 12, 31, 23, 59, 59)); $datesCollection = RecurringBuilder::forConfig($recurringConfig)->startRecurring();
- 每周重复(星期一和星期日)的配置,重复5次后结束
$recurringConfig = new RecurringConfig(); $recurringConfig->setStartDate(Carbon::create(2019, 1, 1, 8, 0, 0)) ->setFrequencyType(FrequencyTypeEnum::WEEK()) ->setFrequencyInterval(1) ->setFrequencyEndType(FrequencyEndTypeEnum::AFTER()) ->setFrequencyEndValue(5) ->setRepeatIn([WeekdayEnum::MONDAY(), WeekdayEnum::SUNDAY()]) ->setEndDate(Carbon::create(2019, 12, 31, 23, 59, 59)); $datesCollection = RecurringBuilder::forConfig($recurringConfig)->startRecurring();
- 每月重复(27日)的配置,在2019-11-30结束
$recurringConfig = new RecurringConfig(); $recurringConfig->setStartDate(Carbon::create(2019, 1, 1, 8, 0, 0)) ->setFrequencyType(FrequencyTypeEnum::MONTH()) ->setFrequencyInterval(1) ->setFrequencyEndType(FrequencyEndTypeEnum::IN()) ->setFrequencyEndValue(Carbon::create(2019, 11, 30)) ->setRepeatIn(27) ->setEndDate(Carbon::create(2019, 12, 31, 23, 59, 59)); $datesCollection = RecurringBuilder::forConfig($recurringConfig)->startRecurring();
- 每年重复(27日和10月)的配置,永不结束
$recurringConfig = new RecurringConfig(); $recurringConfig->setStartDate(Carbon::create(2019, 1, 1, 8, 0, 0)) ->setFrequencyType(FrequencyTypeEnum::MONTH()) ->setFrequencyInterval(1) ->setFrequencyEndType(FrequencyEndTypeEnum::IN()) ->setFrequencyEndValue(Carbon::create(2019, 11, 30)) ->setRepeatIn(['day' => 27, 'month' => 10]) ->setEndDate(Carbon::create(2019, 12, 31, 23, 59, 59)); $datesCollection = RecurringBuilder::forConfig($recurringConfig)->startRecurring();
重复配置
- includeStartDate:默认情况下,开始日期不包括在返回数组中,因为它假定该日期已被使用,只需要返回后续日期。但是,您可以通过将“includeStartDate”属性设置为true来覆盖此行为。
重复构建器
枚举
测试
./vendor/bin/phpunit (Linux)
.\vendor\bin\phpunit (Windows)