我正在尝试从来自另一个系统的字符串创建 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
提交
取消