I need to parse different time format into BASIC_ISO_DATE. Right now, there are 4 types of date format:
2016-10-01 (ISO_LOCAL_DATE)<
You could build your own DateTimeFormatter.
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ISO_ZONED_DATE_TIME)
.appendOptional(DateTimeFormatter.ISO_LOCAL_DATE)
.appendOptional(new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 4)
.optionalStart()
.appendValue(ChronoField.MONTH_OF_YEAR)
.optionalEnd()
.appendLiteral('T')
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1L)
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1L)
.toFormatter())
.toFormatter();
String[] strings = {"2016-10-01", "2016T", "201610T", "2016-02-07T22:03:39.937Z"};
for (String s : strings) {
System.out.println(LocalDate.parse(s, dateTimeFormatter)
.format(DateTimeFormatter.BASIC_ISO_DATE));
}