![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/spomky-labs/pki-framework/src/X509/Feature/ |
<?php declare(strict_types=1); namespace SpomkyLabs\Pki\X509\Feature; use DateTimeImmutable; use DateTimeZone; use Exception; use RuntimeException; use UnexpectedValueException; /** * Helper trait for classes employing date and time handling. */ trait DateTimeHelper { /** * Create DateTime object from time string and timezone. * * @param null|string $time Time string, default to 'now' * @param null|string $tz Timezone, default if omitted */ private static function createDateTime(?string $time = null, ?string $tz = null): DateTimeImmutable { if (! isset($time)) { $time = 'now'; } if (! isset($tz)) { $tz = date_default_timezone_get(); } try { $dt = new DateTimeImmutable($time, self::createTimeZone($tz)); return self::roundDownFractionalSeconds($dt); } catch (Exception $e) { throw new RuntimeException('Failed to create DateTime:', 0, $e); } } /** * Rounds a \DateTimeImmutable value such that fractional seconds are removed. */ private static function roundDownFractionalSeconds(DateTimeImmutable $dt): DateTimeImmutable { return DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $dt->format('Y-m-d H:i:s'), $dt->getTimezone()); } /** * Create DateTimeZone object from string. */ private static function createTimeZone(string $tz): DateTimeZone { try { return new DateTimeZone($tz); } catch (Exception $e) { throw new UnexpectedValueException('Invalid timezone.', 0, $e); } } }