我正在嘗試從來自另一個系統的字符串創建 LocalDateTime 對象(即我無法控制它)。Java 8 的方法LocalDateTime.parse(String, DateTimeFormatter)無法正確解析我的字符串。日期字符串的一個示例是20190813074127111,我使用的模式是yyyyMMddHHmmssSSS。錯誤在于Text '20190813074127111' could not be parsed at index 0我已使用信件的文檔驗證了 DateTimeFormatter 模式中的信件是否正確。它表示整個字符串可以被評估為一年,因為我在模式字符串中使用 yyyy。我嘗試將模式修改為yyMMddHHmmssSSS和uuMMddHHmmssSSS;?在這兩種情況下,異常都會更改為Text '20190813074127111' could not be parsed at index 15我嘗試在模式末尾修剪 SSS 并從輸入字符串中刪除毫秒,并正確創建具有正確日期和時間的 LocalDateTime,但我沒有提供毫秒精度,并且此用例應盡可能精確。我必須刪除一些細節,因為我是為一家公司做這件事,但這與我試圖完成的用例相同public class MyClass {? ? private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");? ? public LocalDateTime parseStringToDate(String input) {? ? ? ? return LocalDateTime.parse(input, DATETIME_FORMATTER);? ? }}
1 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
您需要使用 DateTimeFormatBuilder:
DateTimeFormatter?formatter?= ????new?DateTimeFormatterBuilder() ????????.appendPattern("yyyyMMddHHmmss") ????????.appendValue(ChronoField.MILLI_OF_SECOND,?3) ????????.toFormatter();
添加回答
舉報
0/150
提交
取消