From 701d4d1a15d7f7d8126be6323e02725cee99a2fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Hump=C3=A1l?= Date: Thu, 31 Jul 2025 13:30:43 +0200 Subject: [PATCH] Add a helper TimeZone::fromDefaultTimeZone static constructor --- src/TimeZone.php | 7 +++++++ tests/TimeZoneTest.php | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/TimeZone.php b/src/TimeZone.php index 915e8d2..b067f2a 100644 --- a/src/TimeZone.php +++ b/src/TimeZone.php @@ -9,6 +9,8 @@ use DateTimeZone; use Stringable; +use function date_default_timezone_get; + use const PHP_VERSION_ID; /** @@ -88,6 +90,11 @@ public static function fromNativeDateTimeZone(DateTimeZone $dateTimeZone): TimeZ return $parsed; } + public static function fromDefaultTimeZone(): TimeZone + { + return static::fromNativeDateTimeZone(new DateTimeZone(date_default_timezone_get())); + } + /** * Returns an equivalent native `DateTimeZone` object for this TimeZone. */ diff --git a/tests/TimeZoneTest.php b/tests/TimeZoneTest.php index 227aead..b1d64c5 100644 --- a/tests/TimeZoneTest.php +++ b/tests/TimeZoneTest.php @@ -11,6 +11,8 @@ use DateTimeZone; use PHPUnit\Framework\Attributes\DataProvider; +use function date_default_timezone_get; + use const PHP_VERSION_ID; /** @@ -101,4 +103,14 @@ public static function providerFromNativeDateTimeZone(): iterable yield ['-02:30:30']; } } + + public function testFromDefaultTimeZone(): void + { + $defaultTimeZone = date_default_timezone_get(); + + $timeZone = TimeZone::fromDefaultTimeZone(); + + self::assertInstanceOf(TimeZone::class, $timeZone); + self::assertSame($defaultTimeZone, $timeZone->getId()); + } }