diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-01-17 02:11:31 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-01-17 02:11:31 +0900 |
| commit | deacd0dfc195bca41af631114804d29937337cd8 (patch) | |
| tree | f1f83580e5bc892c0794ac41632bc0cce3498f65 /services/app/src/Sql/DateTimeParser.php | |
| parent | 38ddeb28ec846ee966d0fe6873585d697a9ef373 (diff) | |
| download | phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.tar.gz phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.tar.zst phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.zip | |
.
Diffstat (limited to 'services/app/src/Sql/DateTimeParser.php')
| -rw-r--r-- | services/app/src/Sql/DateTimeParser.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/services/app/src/Sql/DateTimeParser.php b/services/app/src/Sql/DateTimeParser.php new file mode 100644 index 0000000..eb3b58a --- /dev/null +++ b/services/app/src/Sql/DateTimeParser.php @@ -0,0 +1,31 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Albatross\Sql; + +use DateTimeImmutable; +use DateTimeZone; + +final class DateTimeParser +{ + private const FORMATS = [ + 'Y-m-d H:i:s.u', + 'Y-m-d H:i:s', + ]; + + public static function parse(string $s): DateTimeImmutable|false + { + foreach (self::FORMATS as $format) { + $dt = DateTimeImmutable::createFromFormat( + $format, + $s, + new DateTimeZone('UTC'), + ); + if ($dt !== false) { + return $dt; + } + } + return false; + } +} |
