p-sam / duration-immutable
用于存储时间段的不可变类
1.0.0
2020-01-19 14:59 UTC
Requires
- php: >=7.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- korbeil/phpstan-generic-rules: ^0.2.2
- phpstan/phpstan: ^0.11.19
- phpstan/phpstan-deprecation-rules: ^0.11.2
- phpstan/phpstan-strict-rules: ^0.11.1
This package is auto-updated.
Last update: 2024-09-20 01:53:13 UTC
README
不可变PHP类,用于存储时间段,而不依赖于日期。
内部使用 DateInterval 和 DateTime 来进行实际操作。
安装
使用composer安装
$ composer require p-sam/duration-immutable
使用方法
实例化
use SP\DurationImmutable\DurationImmutable; DurationImmutable::fromSeconds(2); // 2s DurationImmutable::fromSeconds(-30); // - 30s DurationImmutable::fromSeconds(92, 0.200130); // 1m 32s 200ms 130µs DurationImmutable::fromPHPDateInterval(new DateInterval('P1DT4H')); // 1d 4H $refDate = DateTimeImmutable::createFromFormat(DateTimeImmutable::ATOM, '2020-01-10T00:00:00+00:00'); DurationImmutable::fromPHPDateInterval( new DateInterval('P1M3D'), $refDate ); // 34d // refer to DateInterval::createFromDateString // for documentation on accepted formats DurationImmutable::fromHuman('1 hour - 15 minutes'); // 45m DurationImmutable::fromHuman('yesterday'); // - 1d
操作
use SP\DurationImmutable\DurationImmutable; $duration = DurationImmutable::fromHuman('120 minutes'); // 2h $duration->abs(); // 2h $duration->add(DurationImmutable::fromHuman('30 minutes')); // 2h 30m $duration->sub(DurationImmutable::fromHuman('3 hours + 10 minutes')); // - 1h 10m $duration->mul(2.5); // 5h $duration->div(-4); // - 30m $dateTime = new DateTimeImmutable(); $duration->addTo($dateTime); // now + 2h $duration->toSeconds(); // 7200 $duration->toIntervalSpec(); // "PT2H" $duration->toPHPDateInterval(); // DateInterval("PT2H")