2015-11-24 13 views

回答

11

一種解決方法是建立自己使用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中修復。

+0

感謝您的幫助,我會將該代碼記錄到JDK9中 –

+1

哇 - 我永遠不會有預計問題在於構建格式化程序。好的趕上:)將刪除我的答案... –