|
1 | 1 | <?php namespace Locker\XApi; |
2 | 2 |
|
3 | | -class Timestamp extends RegexpAtom { |
4 | | - protected static $pattern = '/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|((?!-0{2}(:0{2})?)([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?)?$/'; |
| 3 | +define('ISO_YEAR', '(\d{4})'); |
| 4 | +define('ISO_MONTH', '((0[1-9])|(1[012]))'); |
| 5 | +define('ISO_DAY', '((0[1-9])|([12]\d)|(3[01]))'); |
| 6 | +define('ISO_HOUR', '(([01]\d)|(2[0123]))'); |
| 7 | +define('ISO_MINUTE', '([012345]\d)'); |
| 8 | +define('ISO_SECOND', '([012345]\d)'); |
| 9 | +define('ISO_FRACTION', '(\d+)'); |
| 10 | +define('ISO_DATE_SEPARATOR', '-'); |
| 11 | +define('ISO_TIME_SEPARATOR', ':'); |
| 12 | + |
| 13 | +define('ISO_BASIC_DATE', '('.ISO_YEAR.ISO_MONTH.ISO_DAY.')'); |
| 14 | +define('ISO_BASIC_TIME', '('.ISO_HOUR.'('.ISO_MINUTE.'('.ISO_SECOND.ISO_FRACTION.'?)?)?)'); |
| 15 | +define('ISO_BASIC_ZONE', '(Z|([\+\-]'.ISO_HOUR.ISO_MINUTE.'?))'); |
| 16 | +define('ISO_BASIC', '('.ISO_BASIC_DATE.'(T'.ISO_BASIC_TIME.ISO_BASIC_ZONE.')?)'); |
| 17 | + |
| 18 | +define('ISO_EXTENDED_MONTH', '('.ISO_DATE_SEPARATOR.ISO_MONTH.')'); |
| 19 | +define('ISO_EXTENDED_DAY', '('.ISO_DATE_SEPARATOR.ISO_DAY.')'); |
| 20 | +define('ISO_EXTENDED_MINUTE', '('.ISO_TIME_SEPARATOR.ISO_MINUTE.')'); |
| 21 | +define('ISO_EXTENDED_SECOND', '('.ISO_TIME_SEPARATOR.ISO_SECOND.')'); |
| 22 | +define('ISO_EXTENDED_FRACTION', '(\.'.ISO_FRACTION.')'); |
5 | 23 |
|
6 | | - /** |
7 | | - * Sets the $value. |
8 | | - * @param mixed $new_value |
9 | | - * @return Atom $this |
10 | | - */ |
11 | | - public function setValue($new_value) { |
12 | | - if (preg_match('/[-+]\d\d$/', $new_value)) { |
13 | | - $new_value .= ':00'; |
14 | | - } |
15 | | - return parent::setValue($new_value); |
16 | | - } |
| 24 | +define('ISO_EXTENDED_DATE', '('.ISO_YEAR.ISO_EXTENDED_MONTH.ISO_EXTENDED_DAY.')'); |
| 25 | +define('ISO_EXTENDED_TIME', '('.ISO_HOUR.'('.ISO_EXTENDED_MINUTE.'('.ISO_EXTENDED_SECOND.ISO_EXTENDED_FRACTION.'?)?)?)'); |
| 26 | +define('ISO_EXTENDED_ZONE', '(Z|([\+\-]'.ISO_HOUR.ISO_EXTENDED_MINUTE.'?))'); |
| 27 | +define('ISO_EXTENDED', '('.ISO_EXTENDED_DATE.'(T'.ISO_EXTENDED_TIME.ISO_EXTENDED_ZONE.')?)'); |
| 28 | + |
| 29 | +define('ISO_TIMESTAMP', '/^('.ISO_EXTENDED.'|'.ISO_BASIC.')$/'); |
| 30 | + |
| 31 | +class Timestamp extends RegexpAtom { |
| 32 | + protected static $pattern = ISO_TIMESTAMP; |
17 | 33 | } |
0 commit comments