Passed
Push — master ( fee427...ca6115 )
by Giacomo "Mr. Wolf"
01:42
created

DateParser::parse()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 21
rs 9.5555
c 0
b 0
f 0
cc 5
nc 5
nop 1
1
<?php
2
3
namespace Audiens\AdForm\Entity;
4
5
use DateTime;
6
7
class DateParser
8
{
9
    public static function parse($date)
10
    {
11
        if ($date instanceof DateTime) {
12
            return $date;
13
        }
14
15
        if (\is_numeric($date)) {
16
            $dateTime = new DateTime();
17
            $dateTime->setTimestamp((int)$date);
18
19
            return $dateTime;
20
        }
21
22
        $format = 'Y-m-d\TH:i:sP'; // ISO 8601
23
        if (\preg_match('`^\d{4}-\d{2}-\d{2}$`', $date)) {
24
            $date .= 'T00:00:00+00:00';
25
        } elseif (\preg_match('`^(\d{4}-\d{2}-\d{2}\T\d{2}:\d{2}:\d{2})(\.\d{1,3})?Z$`', $date, $matches)) {
26
            $date = $matches[1].'+00:00';
27
        }
28
29
        return DateTime::createFromFormat($format, $date);
30
    }
31
}
32