I want to parse LocalDateTime from the following template:
yyyyMMddHHmmss000000
This means the usual "yyyy ... ss", followed by six trailing zeros.
So formatting works fine:
String p = "yyyyMMddHHmmss'000000'"; LocalDateTime.now().format(DateTimeFormatter.ofPattern(p));
but parsing:
String p, v; p = "yyyyMMddHHmmss"; // without '000000' v = "20160131235930"; LocalDateTime.parse(v, DateTimeFormatter.ofPattern(p)); // it works p = "yyyy-MMddHHmmss'000000'"; // with '-' in between v = "2016-0131235930000000"; LocalDateTime.parse(v, DateTimeFormatter.ofPattern(p)); // it works p = "yyyyMMddHHmmss'000000'"; // with '000000' but without '-' v = "20160131235930000000"; LocalDateTime.parse(v, DateTimeFormatter.ofPattern(p)); // it throws Exception
An exception:
java.time.format.DateTimeParseException: Text '20160131235930000000' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849) at java.time.LocalDateTime.parse(LocalDateTime.java:492) ...
I cannot change the format of the input value. How can I parse it correctly? Is my template wrong?
Java Version: 1.8.0_60 on OSX
source share