I am trying to parse week-week and week-week from a string without a separator character. For example. "201812" (week 12 of 2018). Like this:
DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendPattern("YYYYww") .parseDefaulting(WeekFields.ISO.dayOfWeek(), 1) .toFormatter(); LocalDate parse = LocalDate.parse("201803", formatter);
But it gives me:
java.time.format.DateTimeParseException: Text '201803' could not be parsed at index 0
If I add a space between such fields:
DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendPattern("YYYY ww") .parseDefaulting(WeekFields.ISO.dayOfWeek(), 1) .toFormatter(); LocalDate parse = LocalDate.parse("2018 03", formatter);
It works great, with the result:
2018-01-15
Is this another mistake like this? Or am I missing something?
The workaround I found was to create custom formatting:
DateTimeFormatter yearWeekPattern = new DateTimeFormatterBuilder().appendValue(IsoFields.WEEK_BASED_YEAR, 4) .appendValue(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 2) .parseDefaulting(WeekFields.ISO.dayOfWeek(), 1) .toFormatter(); LocalDate.parse("201803", yearWeekPattern).atStartOfDay(ZoneId.systemDefault()).toInstant();
java localdate
fassen
source share