Skip to content

Commit b364e7f

Browse files
committed
Fixes timestamp.
1 parent 4c3e527 commit b364e7f

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/Timestamp.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
define('ISO_MONTH', '((0[1-9])|(1[012]))');
55
define('ISO_DAY', '((0[1-9])|([12]\d)|(3[01]))');
66
define('ISO_HOUR', '(([01]\d)|(2[0123]))');
7+
define('ISO_NZ_HOUR', '((0[1-9])|(1\d)|(2[0123]))');
78
define('ISO_MINUTE', '([012345]\d)');
89
define('ISO_SECOND', '([012345]\d)');
910
define('ISO_FRACTION', '(\d+)');
@@ -12,7 +13,7 @@
1213

1314
define('ISO_BASIC_DATE', '('.ISO_YEAR.ISO_MONTH.ISO_DAY.')');
1415
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.'?))');
1617
define('ISO_BASIC', '('.ISO_BASIC_DATE.'(T'.ISO_BASIC_TIME.ISO_BASIC_ZONE.')?)');
1718

1819
define('ISO_EXTENDED_MONTH', '('.ISO_DATE_SEPARATOR.ISO_MONTH.')');
@@ -23,11 +24,23 @@
2324

2425
define('ISO_EXTENDED_DATE', '('.ISO_YEAR.ISO_EXTENDED_MONTH.ISO_EXTENDED_DAY.')');
2526
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.'?))');
2728
define('ISO_EXTENDED', '('.ISO_EXTENDED_DATE.'(T'.ISO_EXTENDED_TIME.ISO_EXTENDED_ZONE.')?)');
2829

2930
define('ISO_TIMESTAMP', '/^('.ISO_EXTENDED.'|'.ISO_BASIC.')$/');
3031

3132
class Timestamp extends RegexpAtom {
3233
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+
}
3346
}

0 commit comments

Comments
 (0)