一種解決方法是建立自己使用DateTimeFormatterBuilder
格式化和固定寬度的每個字段。該代碼產生正確的結果。
public static void main(String[] args) {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR, 4)
.appendValue(ChronoField.MONTH_OF_YEAR, 2)
.appendValue(ChronoField.DAY_OF_MONTH, 2)
.appendValue(ChronoField.HOUR_OF_DAY, 2)
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
System.out.println(LocalDateTime.parse("20150901023302166", formatter));
}
所以它看起來像格式化程序從模式構建時出現問題。在搜索OpenJDK JIRA之後,看起來這確實是一個錯誤,如JDK-8031085中所提及的那樣,並且計劃在JDK 9中修復。
感謝您的幫助,我會將該代碼記錄到JDK9中 –
哇 - 我永遠不會有預計問題在於構建格式化程序。好的趕上:)將刪除我的答案... –