时间间隔计算器,帮助汇总多个时间间隔并显示总耗时天数/小时/分钟/秒

1.1 2021-07-19 01:44 UTC

This package is auto-updated.

Last update: 2024-09-19 08:36:51 UTC


README

时间间隔计算器。

允许汇总间隔,并方便地访问间隔内包含的秒数/分钟/小时/天数。

安装

使用 Composer

composer require savvywombat/ahora

用法

创建

您可以通过创建一个新的实例来创建一个新的间隔,可选地传入一个 ISO8601间隔规范

use SavvyWombat\Ahora\Interval;

$interval = new Interval();
echo $interval->seconds; // outputs 0

$interval = new Interval("PT100D"); // 100 days
echo $interval->seconds; // outputs 8640000

或者,您可以从PHP的DateInterval或以下静态方法创建一个间隔

use SavvyWombat\Ahora\Interval;

$date1 = new \DateTime("now");
$date2 = new \DateTime("2018-01-01");

$interval = Interval::createFromDateInterval($date1->diff($date2));

// or

$interval = Interval::createFromIntervalSpec("P28DT6H42M12S");

间隔数学

一旦您有一个间隔,您就可以轻松地添加秒数、分钟、小时或天数

$interval = new Interval();

$interval->addSeconds(60); // equivalent to $interval->addMinutes(1);
$interval->addMinutes(60); // equivalent to $interval->addHours(1);
$interval->addHours(24); // equivalent to $interval->addDays(1);
$interval->addDays(7);

添加间隔

您还可以将间隔相加

$firstInterval = new Interval();
$firstInterval->addSeconds(45);

$secondInterval = new Interval();
$secondInterval->addSeconds(70);

$firstInterval->addInterval($secondInterval);

echo $firstInterval->seconds; // outputs 55
echo $firstInterval->minutes; // outputs 1

echo $firstInterval->realSeconds; // outputs 115

减去间隔

同样,您可以从一个间隔中减去另一个间隔

$firstInterval = new Interval();
$firstInterval->addSeconds(45);

$secondInterval = new Interval();
$secondInterval->addSeconds(200);

$firstInterval->subInterval($secondInterval);

echo $firstInterval->seconds; // outputs -35
echo $firstInterval->minutes; // outputs -2

echo $firstInterval->realSeconds; // outputs -155

单位和系数

您可以将额外的单位注入间隔(如周)。

您甚至可以修改或完全替换间隔使用的单位 - 但前提是其中一个单位必须是的倍数

$interval = new Interval();
$interval->addDays(10);

echo $interval->days; // outputs 10

$interval->setFactor('weeks', [7, 'days']);

echo $interval->realHours; // outputs 240
echo $interval->days; // outputs 3
echo $interval->weeks; // outputs 1


$interval->setFactor('days', [8, 'hours']);
$interval->setFactor('weeks', [5, 'days']);

echo $interval->realHours; // outputs 240
echo $interval->days; // outputs 2
echo $interval->weeks; // outputs 4

显然,改变这些系数会对间隔的输出产生一些剧烈的影响。

$interval = new Interval();

$oldFactors = $interval->getFactors(); // [ 
                                       //   'minutes' => [60, 'seconds'], 
                                       //   'hours' => [60, 'minutes'],
                                       //   'days' => [24, 'hours'],
                                       // ]

$interval->setFactors([
    'microts' => [1, 'seconds'], // one unit must be related to seconds
    'arns' => [3600, 'microts'],
    'days' => [24, 'arns'],
    'cycles' => [360, 'days'],
]);

$interval->addDays(400);

echo $interval->cycles; // outputs 1
echo $interval->days; // outputs 40

支持

请使用 GitHub问题跟踪器 报告问题。您也可以分支仓库并提交拉取请求。

许可

Ahora遵循MIT许可(MIT)