@@ -198,6 +198,58 @@ public void testParsingStrictNanoDates() {
198
198
formatter .format (formatter .parse ("2018-05-15T17:14:56.123456789+01:00" ));
199
199
}
200
200
201
+ public void testIso8601Parsing () {
202
+ DateFormatter formatter = DateFormatters .forPattern ("iso8601" );
203
+
204
+ // timezone not allowed with just date
205
+ formatter .format (formatter .parse ("2018-05-15" ));
206
+
207
+ formatter .format (formatter .parse ("2018-05-15T17" ));
208
+ formatter .format (formatter .parse ("2018-05-15T17Z" ));
209
+ formatter .format (formatter .parse ("2018-05-15T17+0100" ));
210
+ formatter .format (formatter .parse ("2018-05-15T17+01:00" ));
211
+
212
+ formatter .format (formatter .parse ("2018-05-15T17:14" ));
213
+ formatter .format (formatter .parse ("2018-05-15T17:14Z" ));
214
+ formatter .format (formatter .parse ("2018-05-15T17:14-0100" ));
215
+ formatter .format (formatter .parse ("2018-05-15T17:14-01:00" ));
216
+
217
+ formatter .format (formatter .parse ("2018-05-15T17:14:56" ));
218
+ formatter .format (formatter .parse ("2018-05-15T17:14:56Z" ));
219
+ formatter .format (formatter .parse ("2018-05-15T17:14:56+0100" ));
220
+ formatter .format (formatter .parse ("2018-05-15T17:14:56+01:00" ));
221
+
222
+ // milliseconds can be separated using comma or decimal point
223
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123" ));
224
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123Z" ));
225
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123-0100" ));
226
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123-01:00" ));
227
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123" ));
228
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123Z" ));
229
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123+0100" ));
230
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123+01:00" ));
231
+
232
+ // microseconds can be separated using comma or decimal point
233
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456" ));
234
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456Z" ));
235
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456+0100" ));
236
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456+01:00" ));
237
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456" ));
238
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456Z" ));
239
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456-0100" ));
240
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456-01:00" ));
241
+
242
+ // nanoseconds can be separated using comma or decimal point
243
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456789" ));
244
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456789Z" ));
245
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456789-0100" ));
246
+ formatter .format (formatter .parse ("2018-05-15T17:14:56.123456789-01:00" ));
247
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456789" ));
248
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456789Z" ));
249
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456789+0100" ));
250
+ formatter .format (formatter .parse ("2018-05-15T17:14:56,123456789+01:00" ));
251
+ }
252
+
201
253
public void testRoundupFormatterWithEpochDates () {
202
254
assertRoundupFormatter ("epoch_millis" , "1234567890" , 1234567890L );
203
255
// also check nanos of the epoch_millis formatter if it is rounded up to the nano second
0 commit comments