proofdb/vendor/illuminate/support/Carbon.php
2026-05-01 23:40:14 +08:00

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
");
}
}