FULL PRODUCT VERSION :
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.11.6
A DESCRIPTION OF THE PROBLEM :
The `java.time.Instant` class fails to parse input with a comma such as "2016-01-02T12:34:56,7Z".
The java.time classes handle ISO 8601 formats by default when parsing or generating Strings that represent date-time values.
The ISO 8601 standard accepts a decimal mark of either a COMMA or a FULL STOP (period, dot), with a preference for the COMMA. Source: the Wikipedia page for ISO 8601.
https://en.wikipedia.org/wiki/ISO_8601
So I would expect this to work:
String inputDot = "2016-01-02T12:34:56.7Z";
Instant instantDot = Instant.parse ( inputDot );
…as well as this one…
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
The first one with a dot does indeed succeed, but the second one with a comma fails with a `DateTimeParseException`.
Exception in thread "main" java.time.format.DateTimeParseException: Text '2016-01-02T12:34:56,7Z' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.Instant.parse(Instant.java:395)
at com.example.javatimestuff.App4.doIt(App4.java:92)
at com.example.javatimestuff.App4.main(App4.java:61)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run this code:
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Expect an `Instant` object to be instantiated.
ACTUAL -
java.time.format.DateTimeParseException
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.time.format.DateTimeParseException: Text '2016-01-02T12:34:56,7Z' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.Instant.parse(Instant.java:395)
at com.example.javatimestuff.App4.doIt(App4.java:92)
at com.example.javatimestuff.App4.main(App4.java:61)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
---------- END SOURCE ----------
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.11.6
A DESCRIPTION OF THE PROBLEM :
The `java.time.Instant` class fails to parse input with a comma such as "2016-01-02T12:34:56,7Z".
The java.time classes handle ISO 8601 formats by default when parsing or generating Strings that represent date-time values.
The ISO 8601 standard accepts a decimal mark of either a COMMA or a FULL STOP (period, dot), with a preference for the COMMA. Source: the Wikipedia page for ISO 8601.
https://en.wikipedia.org/wiki/ISO_8601
So I would expect this to work:
String inputDot = "2016-01-02T12:34:56.7Z";
Instant instantDot = Instant.parse ( inputDot );
…as well as this one…
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
The first one with a dot does indeed succeed, but the second one with a comma fails with a `DateTimeParseException`.
Exception in thread "main" java.time.format.DateTimeParseException: Text '2016-01-02T12:34:56,7Z' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.Instant.parse(Instant.java:395)
at com.example.javatimestuff.App4.doIt(App4.java:92)
at com.example.javatimestuff.App4.main(App4.java:61)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run this code:
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Expect an `Instant` object to be instantiated.
ACTUAL -
java.time.format.DateTimeParseException
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.time.format.DateTimeParseException: Text '2016-01-02T12:34:56,7Z' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.Instant.parse(Instant.java:395)
at com.example.javatimestuff.App4.doIt(App4.java:92)
at com.example.javatimestuff.App4.main(App4.java:61)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
String inputComma = "2016-01-02T12:34:56,7Z";
Instant instantComma = Instant.parse ( inputComma );
---------- END SOURCE ----------