/
DateTime.php
64 lines (57 loc) · 1.45 KB
/
DateTime.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/**
* AbraFlexi - DateTime object.
*
* @author Vítězslav Dvořák <info@vitexsoftware.cz>
* @copyright (C) 2021-2023 Spoje.Net
*/
namespace AbraFlexi;
/**
* Description of DateTime
*
* @author vitex
*/
class DateTime extends \DateTime
{
/**
* Support for Null values
* @var bool
*/
public /*bool*/ $isNull = false;
/**
* Default output format
* @var string
*/
public static $format = 'Y-m-d\TH:i:s';
/**
* AbraFlexi dateTime to PHP DateTime conversion
*
* @param string $flexidatetime 2017-09-26T10:00:53.755+02:00 or older 2017-05-19T00:00:00+02:00
*
* @return \DateTime | false
*/
public function __construct(string $flexidatetime = 'NOW')
{
$this->isNull = empty($flexidatetime);
$format = '';
if (strchr($flexidatetime, '.')) { //NewFormat
$format = self::$format;
} elseif (!empty($flexidatetime) && ($flexidatetime != 'NOW')) { // Old format
$format = 'Y-m-d\TH:i:s+P';
}
if (empty($format)) {
parent::__construct();
} else {
parent::__construct(\DateTime::createFromFormat($format, $flexidatetime)->format(\DateTimeInterface::ATOM));
}
}
/**
* Render Object as AbraFlexi::$DateTimeFormat
*
* @return string
*/
public function __toString()
{
return $this->isNull ? '' : $this->format(self::$format);
}
}