|
4 | 4 | define('ISO_MONTH', '((0[1-9])|(1[012]))'); |
5 | 5 | define('ISO_DAY', '((0[1-9])|([12]\d)|(3[01]))'); |
6 | 6 | define('ISO_HOUR', '(([01]\d)|(2[0123]))'); |
| 7 | +define('ISO_NZ_HOUR', '((0[1-9])|(1\d)|(2[0123]))'); |
7 | 8 | define('ISO_MINUTE', '([012345]\d)'); |
8 | 9 | define('ISO_SECOND', '([012345]\d)'); |
9 | 10 | define('ISO_FRACTION', '(\d+)'); |
|
12 | 13 |
|
13 | 14 | define('ISO_BASIC_DATE', '('.ISO_YEAR.ISO_MONTH.ISO_DAY.')'); |
14 | 15 | 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_ZONE', '(Z|(\+'.ISO_HOUR.ISO_MINUTE.'?)|(\-'.ISO_NZ_HOUR.ISO_MINUTE.'?))'); |
16 | 17 | define('ISO_BASIC', '('.ISO_BASIC_DATE.'(T'.ISO_BASIC_TIME.ISO_BASIC_ZONE.')?)'); |
17 | 18 |
|
18 | 19 | define('ISO_EXTENDED_MONTH', '('.ISO_DATE_SEPARATOR.ISO_MONTH.')'); |
|
23 | 24 |
|
24 | 25 | define('ISO_EXTENDED_DATE', '('.ISO_YEAR.ISO_EXTENDED_MONTH.ISO_EXTENDED_DAY.')'); |
25 | 26 | 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_ZONE', '(Z|(\+'.ISO_HOUR.ISO_EXTENDED_MINUTE.'?)|(\-'.ISO_NZ_HOUR.ISO_EXTENDED_MINUTE.'?))'); |
27 | 28 | define('ISO_EXTENDED', '('.ISO_EXTENDED_DATE.'(T'.ISO_EXTENDED_TIME.ISO_EXTENDED_ZONE.')?)'); |
28 | 29 |
|
29 | 30 | define('ISO_TIMESTAMP', '/^('.ISO_EXTENDED.'|'.ISO_BASIC.')$/'); |
30 | 31 |
|
31 | 32 | class Timestamp extends RegexpAtom { |
32 | 33 | protected static $pattern = ISO_TIMESTAMP; |
| 34 | + |
| 35 | + /** |
| 36 | + * Sets the $value. |
| 37 | + * @param mixed $new_value |
| 38 | + * @return Atom $this |
| 39 | + */ |
| 40 | + public function setValue($new_value) { |
| 41 | + if (preg_match('/[-+]\d\d$/', $new_value)) { |
| 42 | + $new_value .= ':00'; |
| 43 | + } |
| 44 | + return parent::setValue($new_value); |
| 45 | + } |
33 | 46 | } |
0 commit comments