File tree Expand file tree Collapse file tree 2 files changed +6
-12
lines changed Expand file tree Collapse file tree 2 files changed +6
-12
lines changed Original file line number Diff line number Diff line change @@ -875,18 +875,12 @@ private long visitDateTimeExtendedJson() {
875
875
if (valueToken .getType () == JsonTokenType .INT32 || valueToken .getType () == JsonTokenType .INT64 ) {
876
876
return valueToken .getValue (Long .class );
877
877
} else if (valueToken .getType () == JsonTokenType .STRING ) {
878
- String dateString = valueToken .getValue (String .class );
879
- SimpleDateFormat format = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSSXXX" , Locale .ENGLISH );
880
- ParsePosition pos = new ParsePosition (0 );
881
- format .setLenient (true );
882
-
883
- Date date = format .parse (dateString , pos );
884
-
885
- if (date != null && pos .getIndex () == dateString .length ()) {
886
- return date .getTime ();
878
+ String dateTimeString = valueToken .getValue (String .class );
879
+ try {
880
+ return DatatypeConverter .parseDateTime (dateTimeString ).getTimeInMillis ();
881
+ } catch (IllegalArgumentException e ) {
882
+ throw new JsonParseException ("JSON reader expected an ISO-8601 date time string but found." , dateTimeString );
887
883
}
888
-
889
- throw new JsonParseException ("JSON reader expected an ISO-8601 date string but found." , dateString );
890
884
} else {
891
885
throw new JsonParseException ("JSON reader expected an integer or string but found '%s'." , valueToken .getValue ());
892
886
}
Original file line number Diff line number Diff line change @@ -147,7 +147,7 @@ public void testDateTimeISOStringWithTimeOffset() {
147
147
148
148
@ Test (expected = JsonParseException .class )
149
149
public void testInvalidDateTimeISOString1 () {
150
- String json = "{ \" $date\" : \" 2015-04-16T16:55:57.626+02:000 \" }" ;
150
+ String json = "{ \" $date\" : \" 2015-04-16T16:55:57.626+02:0000 \" }" ;
151
151
bsonReader = new JsonReader (json );
152
152
bsonReader .readBsonType ();
153
153
}
You can’t perform that action at this time.
0 commit comments