org_heigl/dateintervalcomparator

比较两个 DateInterval-对象

1.1.0 2020-01-14 09:59 UTC

This package is auto-updated.

Last update: 2024-08-29 04:40:14 UTC


README

比较两个 DateInterval-对象。

Build Status Code Climate Coverage Status Scrutinizer Code Quality

Total Downloads Latest Stable Version License

安装

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 文件中找到副本。