wiilianx7/php-recurring

PHP 库,使处理周期性任务时获取日期更加容易。

v2.0.5 2023-01-25 20:05 UTC

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)