ex
Fork of mbed-os-example-mbed5-blinky by
dumi_doc-master/schema/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php@44:c1d8923072ba, 2017-07-18 (annotated)
- Committer:
- TMBOY
- Date:
- Tue Jul 18 16:27:22 2017 +0800
- Revision:
- 44:c1d8923072ba
?
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| TMBOY | 44:c1d8923072ba | 1 | <?php |
| TMBOY | 44:c1d8923072ba | 2 | |
| TMBOY | 44:c1d8923072ba | 3 | namespace JsonSchema; |
| TMBOY | 44:c1d8923072ba | 4 | |
| TMBOY | 44:c1d8923072ba | 5 | class Rfc3339 |
| TMBOY | 44:c1d8923072ba | 6 | { |
| TMBOY | 44:c1d8923072ba | 7 | const REGEX = '/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(\.\d+)?(Z|([+-]\d{2}):?(\d{2}))/'; |
| TMBOY | 44:c1d8923072ba | 8 | |
| TMBOY | 44:c1d8923072ba | 9 | /** |
| TMBOY | 44:c1d8923072ba | 10 | * Try creating a DateTime instance |
| TMBOY | 44:c1d8923072ba | 11 | * |
| TMBOY | 44:c1d8923072ba | 12 | * @param string $string |
| TMBOY | 44:c1d8923072ba | 13 | * @return \DateTime|null |
| TMBOY | 44:c1d8923072ba | 14 | */ |
| TMBOY | 44:c1d8923072ba | 15 | public static function createFromString($string) |
| TMBOY | 44:c1d8923072ba | 16 | { |
| TMBOY | 44:c1d8923072ba | 17 | if (!preg_match(self::REGEX, strtoupper($string), $matches)) { |
| TMBOY | 44:c1d8923072ba | 18 | return null; |
| TMBOY | 44:c1d8923072ba | 19 | } |
| TMBOY | 44:c1d8923072ba | 20 | |
| TMBOY | 44:c1d8923072ba | 21 | $dateAndTime = $matches[1]; |
| TMBOY | 44:c1d8923072ba | 22 | $microseconds = $matches[2] ?: '.000000'; |
| TMBOY | 44:c1d8923072ba | 23 | $timeZone = 'Z' !== $matches[3] ? $matches[4] . ':' . $matches[5] : '+00:00'; |
| TMBOY | 44:c1d8923072ba | 24 | |
| TMBOY | 44:c1d8923072ba | 25 | $dateTime = \DateTime::createFromFormat('Y-m-d\TH:i:s.uP', $dateAndTime . $microseconds . $timeZone, new \DateTimeZone('UTC')); |
| TMBOY | 44:c1d8923072ba | 26 | |
| TMBOY | 44:c1d8923072ba | 27 | return $dateTime ?: null; |
| TMBOY | 44:c1d8923072ba | 28 | } |
| TMBOY | 44:c1d8923072ba | 29 | } |
