我的日期时间可能是以下格式之一:
我构建的DateTimeFormatter
如下:
new DateTimeFormatterBuilder()
.appendValue(ChronoField.MONTH_OF_YEAR, 1, 2, SignStyle.NEVER)
.appendLiteral('/')
.appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NEVER)
.appendLiteral('/')
.appendValue(ChronoField.YEAR_OF_ERA, 2, 4, SignStyle.NEVER)
.optionalStart()
.appendLiteral(' ')
.appendValue(HOUR_OF_DAY, 2)
.appendLiteral(':')
.appendValue(MINUTE_OF_HOUR, 2)
.toFormatter();
但它无法格式化2/9/17
。为什么呢?
答案 0 :(得分:1)
这有效:
new DateTimeFormatterBuilder()
.appendValue(ChronoField.MONTH_OF_YEAR, 1, 2, SignStyle.NEVER)
.appendLiteral('/')
.appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NEVER)
.appendLiteral('/')
.appendValueReduced(ChronoField.YEAR, 2, 4, yearMonth.getYear())
.appendPattern("[ HH:mm]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.toFormatter();
我在回复Meno Hochschild评论时发布的错误是通过设置可选小时和分钟的默认值来修复的。