shrikeh / datetime
用于日期时间周期和范围的简单样板库
0.1.1
2024-02-23 11:43 UTC
Requires
- php: >=8.3
Requires (Dev)
- behat/behat: *
- dealerdirect/phpcodesniffer-composer-installer: ^1.0.0
- ergebnis/composer-normalize: *
- infection/infection: *
- jangregor/phpstan-prophecy: *
- phpmd/phpmd: *
- phpmetrics/phpmetrics: *
- phpspec/prophecy-phpunit: *
- phpstan/extension-installer: *
- phpstan/phpstan: *
- phpunit/php-code-coverage: *
- phpunit/phpcov: *
- phpunit/phpunit: >=10.0
- shrikeh/php-coding-bible: dev-main
- squizlabs/php_codesniffer: *
- symfony/dotenv: ^7.0
- vimeo/psalm: *
README
代表DateTime周期和范围的样板集合。
概述
此库添加了两个用于DateTime使用的实用类:Period
,用于描述DateTime "窗口"(例如日历会议),以及Range
,用于描述多个日期并自动按时间顺序排序(从最早到最新)。
安装
通过composer安装
composer require shrikeh/datetime
用法
这两个类都确保日期是不可变的,因此内部使用DateTimeImmutable。
Range
表示一系列日期。给定以下日期
<?php $date1 = new DateTime('+7 days'); $date2 = new DateTimeImmutable(); $date3 = new DateTime('+5 hours'); $date4 = new DateTimeImmutable('-1 hour');
这些日期可以通过以下方式简单地排序
$range = Range::fromDateTimes( $date1, $date2, $date3, $date4, ); foreach ($range() as $date) { // Will iterate as $date4, $date2, $date3, $date 1 }
Range有两个辅助方法,earliest()
和latest()
,它们返回DateTime的外界界限。要从Range创建Period非常简单
$range = Range::fromDateTimes( new DateTimeImmutable(), new DateTimeImmutable('+2 years'), new DateTimeImmutable('+1 month'), ); $period = $range->period();
在上面的示例中,Period将从现在开始,结束于两年后。