81 lines
2.1 KiB
PHP
81 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Support;
|
|
|
|
use Carbon\Carbon as BaseCarbon;
|
|
use Carbon\CarbonImmutable as BaseCarbonImmutable;
|
|
use Illuminate\Support\Traits\Conditionable;
|
|
use Illuminate\Support\Traits\Dumpable;
|
|
use Ramsey\Uuid\Uuid;
|
|
use Symfony\Component\Uid\Ulid;
|
|
|
|
class Carbon extends BaseCarbon
|
|
{
|
|
use Conditionable, Dumpable;
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public static function setTestNow(mixed $testNow = null): void
|
|
{
|
|
BaseCarbon::setTestNow($testNow);
|
|
BaseCarbonImmutable::setTestNow($testNow);
|
|
}
|
|
|
|
/**
|
|
* Create a Carbon instance from a given ordered UUID or ULID.
|
|
*/
|
|
public static function createFromId(Uuid|Ulid|string $id): static
|
|
{
|
|
if (is_string($id)) {
|
|
$id = Ulid::isValid($id) ? Ulid::fromString($id) : Uuid::fromString($id);
|
|
}
|
|
|
|
return static::createFromInterface($id->getDateTime());
|
|
}
|
|
|
|
/**
|
|
* Get the current date / time plus a given amount of time.
|
|
*/
|
|
public function plus(
|
|
int $years = 0,
|
|
int $months = 0,
|
|
int $weeks = 0,
|
|
int $days = 0,
|
|
int $hours = 0,
|
|
int $minutes = 0,
|
|
int $seconds = 0,
|
|
int $microseconds = 0,
|
|
?bool $overflow = null
|
|
): static {
|
|
return $this->add('years', $years, $overflow)
|
|
->add('months', $months, $overflow)
|
|
->add("
|
|
$weeks weeks $days days
|
|
$hours hours $minutes minutes $seconds seconds $microseconds microseconds
|
|
");
|
|
}
|
|
|
|
/**
|
|
* Get the current date / time minus a given amount of time.
|
|
*/
|
|
public function minus(
|
|
int $years = 0,
|
|
int $months = 0,
|
|
int $weeks = 0,
|
|
int $days = 0,
|
|
int $hours = 0,
|
|
int $minutes = 0,
|
|
int $seconds = 0,
|
|
int $microseconds = 0,
|
|
?bool $overflow = null
|
|
): static {
|
|
return $this->sub('years', $years, $overflow)
|
|
->sub('months', $months, $overflow)
|
|
->sub("
|
|
$weeks weeks $days days
|
|
$hours hours $minutes minutes $seconds seconds $microseconds microseconds
|
|
");
|
|
}
|
|
}
|