shrikeh/datetime

用于日期时间周期和范围的简单样板库

0.1.1 2024-02-23 11:43 UTC

This package is auto-updated.

Last update: 2024-09-23 12:57:46 UTC


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将从现在开始,结束于两年后。