Skip to content

Commit e83dfb6

Browse files
authored
Merge pull request #222 from crate-metadata/SecFracs
The secFracs field will support upto 12 chars
2 parents 33a76db + ac2e223 commit e83dfb6

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

src/main/java/com/github/fge/jsonschema/format/common/DateTimeAttribute.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ public final class DateTimeAttribute
4242
extends AbstractFormatAttribute
4343
{
4444
private static final List<String> FORMATS = ImmutableList.of(
45-
"yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
45+
"yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.[0-9]{1,12}Z"
4646
);
4747
private static final DateTimeFormatter FORMATTER;
4848

4949
static {
50-
final DateTimeParser msParser = new DateTimeFormatterBuilder()
51-
.appendLiteral('.').appendDecimal(millisOfSecond(), 1, 3)
50+
final DateTimeParser secFracsParser = new DateTimeFormatterBuilder()
51+
.appendLiteral('.').appendFractionOfSecond(1,12)
5252
.toParser();
5353

5454
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
@@ -64,7 +64,7 @@ public final class DateTimeAttribute
6464
.appendFixedDecimal(minuteOfHour(), 2)
6565
.appendLiteral(':')
6666
.appendFixedDecimal(secondOfMinute(), 2)
67-
.appendOptional(msParser)
67+
.appendOptional(secFracsParser)
6868
.appendTimeZoneOffset("Z", false, 2, 2);
6969

7070
FORMATTER = builder.toFormatter();

src/test/resources/format/common/date-time.json

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"message": "err.format.invalidDate",
2626
"msgData": {
2727
"value": "2012-02-30T00:00:00+0000",
28-
"expected": [ "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.SSSZ" ]
28+
"expected": [ "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.[0-9]{1,12}Z" ]
2929
},
3030
"msgParams": [ "value", "expected" ]
3131
},
@@ -35,8 +35,48 @@
3535
"message": "err.format.invalidDate",
3636
"msgData": {
3737
"value": "201202030",
38-
"expected": [ "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.SSSZ" ]
38+
"expected": [ "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd'T'HH:mm:ss.[0-9]{1,12}Z" ]
3939
},
4040
"msgParams": [ "value", "expected" ]
41+
},
42+
{
43+
"data": "2012-08-07T20:42:32.1234Z",
44+
"valid": true
45+
},
46+
{
47+
"data": "2012-08-07T20:42:32.12345Z",
48+
"valid": true
49+
},
50+
{
51+
"data": "2012-08-07T20:42:32.123456Z",
52+
"valid": true
53+
},
54+
{
55+
"data": "2012-08-07T20:42:32.1234567Z",
56+
"valid": true
57+
},
58+
{
59+
"data": "2012-08-07T20:42:32.12345678Z",
60+
"valid": true
61+
},
62+
{
63+
"data": "2012-08-07T20:42:32.12345678Z",
64+
"valid": true
65+
},
66+
{
67+
"data": "2012-08-07T20:42:32.123456789Z",
68+
"valid": true
69+
},
70+
{
71+
"data": "2012-08-07T20:42:32.1234567890Z",
72+
"valid": true
73+
},
74+
{
75+
"data": "2012-08-07T20:42:32.12345678901Z",
76+
"valid": true
77+
},
78+
{
79+
"data": "2012-08-07T20:42:32.123456789012Z",
80+
"valid": true
4181
}
4282
]

0 commit comments

Comments
 (0)