this.generalizedTimeFormatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 4)
.appendValue(ChronoField.MONTH_OF_YEAR, 2)
.appendValue(ChronoField.DAY_OF_MONTH, 2)
.appendValue(ChronoField.HOUR_OF_DAY, 2)
.optionalStart()
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
.optionalStart()
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.optionalStart()
.appendFraction(ChronoField.MILLI_OF_SECOND, 3, 3, true)
.optionalStart()
.optionalEnd() //millis
.optionalEnd() //seconds
.optionalEnd() //minutes
.optionalStart()
.appendOffset("+HHmm", "Z")
.parseDefaulting(ChronoField.OFFSET_SECONDS, 0)
.toFormatter();