rlanvin / php-rrule
PHP 的轻量级快速循环规则 (RFC 5545)
Requires
- php: >=5.6.0
Requires (Dev)
- phpmd/phpmd: @stable
- phpunit/phpunit: ^5.7|^6.5|^8.0
Suggests
- ext-intl: Intl extension is needed for humanReadable()
- dev-master
- v2.5.1
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.0
- v2.0.0
- v2.0.0-rc1
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.1
- v1.5.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- dev-drop-old-php
- dev-php8.2
- dev-issue120
- dev-issue104-microseconds
- dev-roikedem-fix-i18n
- dev-php8.0
- dev-php74
- dev-php7.3
- dev-proxy
- dev-generator
This package is auto-updated.
Last update: 2024-08-27 07:38:31 UTC
README
PHP 的轻量级快速循环规则实现 (RRULE
来自 RFC 5545),用于轻松计算重复/循环的日期和事件(例如在日历中)。这个库最初是 python-dateutil 的移植。
基本示例
use RRule\RRule; $rrule = new RRule([ 'FREQ' => 'MONTHLY', 'INTERVAL' => 1, 'DTSTART' => '2015-06-01', 'COUNT' => 6 ]); foreach ($rrule as $occurrence) { echo $occurrence->format('D d M Y'),", "; } // Mon 01 Jun 2015, Wed 01 Jul 2015, Sat 01 Aug 2015, Tue 01 Sep 2015, Thu 01 Oct 2015, Sun 01 Nov 2015 echo $rrule->humanReadable(),"\n"; // monthly on the 1st of the month, starting from 01/06/2015, 6 times
完整文档和更多示例可在 维基 中找到。
要求
- PHP >= 5.6
- intl 扩展推荐用于
humanReadable()
,但不是强制要求
安装
建议的方法是通过 Composer 安装库 通过 Composer。
只需运行 composer require rlanvin/php-rrule
,它将被自动安装并包含在您的 composer.json
中。
现在您可以使用自动加载器,您将能够访问这个库
require 'vendor/autoload.php';
文档
完整文档可在 维基 中找到。
您还可以在 RFC 5545 第 3.3.10 节 中找到有用的信息。
贡献
请随意贡献!只需创建一个新的问题或一个新的 pull request。
编码风格是(主要是)PSR-2,但使用制表符。
翻译
使用 ./bin/review_translations.php --locale <locale>
打印使用指定区域设置(默认为英语)的示例列表。使用 ./bin/review_translations.php --rule "<rule>"
测试所有可用区域设置中的特定规则。
注意
我开始这个库是因为我对 PHP 中现有的实现不满意,所以我认为将 python-dateutil 的 rrule 实现移植到 PHP 将是一个很好的学习项目。
Python 库有点难以理解,因为算法没有注释,变量非常不透明(我指的是 lno1wkst
)。我尽量在 PHP 移植中注释和解释尽可能多的算法,所以如果您感兴趣,请随意查看代码。
该库在各个方面都与 Python 版本有所不同,特别是在对 RFC 的尊重方面。这个版本更加严格,不会接受许多 Python 版本接受的规则部分的非合规组合。该版本还有一些额外的功能。
许可证
本库采用 MIT 许可证发布。