Skip to content

Commit 13a1401

Browse files
committed
1 parent dc9751b commit 13a1401

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

src/Timestamp.php

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
<?php namespace Locker\XApi;
22

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.')');
523

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;
1733
}

0 commit comments

Comments
 (0)