Skip to content

Commit e260665

Browse files
committed
Merge pull request #23 from paranoiq/master
Support for ISO date-time with timezone offset
2 parents 78151a5 + 86631ea commit e260665

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/JsonSchema/Constraints/Format.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public function check($element, $schema = null, $path = null, $i = null)
4040
break;
4141

4242
case 'date-time':
43-
if (!$this->validateDateTime($element, 'Y-m-d\TH:i:s\Z')) {
44-
$this->addError($path, sprintf('Invalid date time %s, expected format YYYY-MM-DDTHH:MM:SSZ', json_encode($element)));
43+
if (!$this->validateDateTime($element, 'Y-m-d\TH:i:s\Z') &&
44+
!$this->validateDateTime($element, 'Y-m-d\TH:i:sP')
45+
) {
46+
$this->addError($path, sprintf('Invalid date time %s, expected format YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DDTHH:MM:SS+HH:MM', json_encode($element)));
4547
}
4648
break;
4749

@@ -155,4 +157,4 @@ protected function validateHostname($host)
155157
{
156158
return preg_match('/^[_a-z]+\.([_a-z]+\.?)+$/i', $host);
157159
}
158-
}
160+
}

tests/JsonSchema/Tests/Constraints/FormatTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function getValidFormats()
7373
array('23:59:59', 'time'),
7474

7575
array('2000-05-01T12:12:12Z', 'date-time'),
76+
array('2000-05-01T12:12:12+01:00', 'date-time'),
7677

7778
array('0', 'utc-millisec'),
7879

@@ -127,6 +128,7 @@ public function getInvalidFormats()
127128
array('25:00:00', 'time'),
128129

129130
array('1999-1-11T00:00:00Z', 'date-time'),
131+
array('1999-01-11T00:00:00+1:00', 'date-time'),
130132

131133
array('-1', 'utc-millisec'),
132134
array(PHP_INT_MAX, 'utc-millisec'),

0 commit comments

Comments
 (0)