org_heigl / dateintervalcomparator
比较两个 DateInterval-对象
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^5.6 || ^6.0 || ^7.0 || ^8.0
This package is auto-updated.
Last update: 2024-08-29 04:40:14 UTC
README
比较两个 DateInterval-对象。
安装
DateIntervalComparator 最佳通过 composer 安装
composer require org_heigl/dateintervalcomparator
用法
$comparator = new Org_Heigl\DateIntervalComparator\DateIntervalComparator() echo $comparator->compare(new Dateinterval('P1Y'), new DateInterval('P1M')); // 1
DateIntervalComparator
使用与 PHP 中所有比较函数相同的返回值。当第一个值小于第二个值时返回 -1,如果第一个值大于第二个值时返回 1,如果两者相等则返回 0。因此,该方法可以用作排序数组的回调。
此库假设比较的区间是有意义的并且相似的。比较 3 个月和 4 天与 5 个月和 7 天是此库所设计的。它不是用来比较 3 个月和 4 天与 94 天的。由于月份的天数不同,这种比较将取决于起始日期,而我们只想比较区间,而不是结果结束日期!
只要值不超过它们的模数(例如,月份为 13 或小时为 25 的值),您就处于安全状态。
您甚至可以通过设置 php $comparator->safe(true)
来强制这一安全措施。这样,如果月份、天数、小时、分钟或秒的任何值超过 12、31、24、60 和 60,则会抛出异常。
注意事项/限制
小心!DateInterval 可能很棘手!
由于它们的性质,DateInterval 不考虑日期或时间!所以 DateInterval('P1M')
可能与 DateInterval('P30D')
相同或不同!此库将在“相同实体”级别上进行比较。所以首先比较年份,然后是月份,然后是周,依此类推。如果您有一个只描述 55 周的区间,并将其与只描述一年的区间进行比较,那么一年将被视为更大,尽管 55 周更多。所以您应该只比较可比较的区间!
同样,例如,new DateInterval('PT36H')
和 new DateInterval('P1DT12H')
也可能发生这种情况。您会认为它们是相同的,但考虑到夏令时,它们可能突然不相同!所以目前 P1DT12H
被认为是“更高的”。
许可证
此库在 MIT 许可证下发布。在 LICENSE.md 文件中找到副本。