brzuchal/recurrence-rules

recurrence-rules 解析器和迭代器(符合 RFC 5545 和 RFC 2445)

1.x-dev 2023-03-21 10:44 UTC

This package is auto-updated.

Last update: 2024-09-21 13:57:47 UTC


README

Tests

致俄罗斯 🇷🇺 人的一封信

如果您目前居住在俄罗斯,请阅读 此信息

目的

PHP 的重复处理器

此库可以解析按照 RFC 5545 和 RFC 2445 定义的重复字符串并迭代实例。此外,它还可以方便地构建有效的重复字符串。

Rule 类以不可变的方式实现,请使用 RuleBuilder 以方便地构建 Rule 对象。

注意!目前 RuleIterator 依赖于 rlanvin/php-rrule 来封装库,并返回 DateTimeImmutable 对象,这是一个临时的方法,因为限制和扩展的逻辑比较复杂,将来将用一系列过滤器/扩展器以更面向对象的方式替换,这种方式高度受到 Java 实现 dmfs/lib-recur 的启发。

注意!本库中类的接口尚未最终确定,可能发生变化。

SWUbanner

安装

composer require brzuchal/recurrence-rules

用法

use Brzuchal\RecurrenceRule\RuleFactory;
use Brzuchal\RecurrenceRule\RuleIterator;

$rule = RuleFactory::fromString('FREQ=MONTHLY;COUNT=4;INTERVAL=2;BYDAY=MO,TU;WKST=TU');
echo $rule->toString(); // FREQ=MONTHLY;COUNT=1;INTERVAL=2;BYDAY=MO,TU;WKST=TU

foreach (new RuleIterator(new DateTimeImmutable('2006-08-01'), $rule) as $occurrence) {
    echo $occurrence->format('Y-m-d'),", ";
} // 2006-08-01, 2006-08-07, 2006-08-08, 2006-08-14,

许可证

MIT 许可证

版权所有 (c) 2022 Michał Marcin Brzuchalski

以下是对任何获得本软件及其相关文档副本(以下简称“软件”)的人的授权,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人这样做,但前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这种责任是基于合同、侵权或其他原因,无论这种责任是否与软件或软件的使用或其他方式有关。