【发布时间】:2020-02-27 03:11:19
【问题描述】:
我正在尝试从来自另一个系统的字符串创建一个 LocalDateTime 对象(即我没有能力控制它)。 Java 8 的LocalDateTime.parse(String, DateTimeFormatter) 方法无法正确解析我的字符串。日期字符串的一个例子是20190813074127111,我使用的模式是yyyyMMddHHmmssSSS。错误是Text '20190813074127111' could not be parsed at index 0
我已经使用这些字母的文档验证了我的 DateTimeFormatter 模式中的字母是正确的。我在 Stack Overflow 上看到了许多与此非常相似的问题和答案,但没有一个能完全解决我的问题。
我认为this Stack Overflow 与我正在经历的类似,这表示整个字符串可以被评估为一年,因为我在我的模式字符串中使用 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);
}
}
【问题讨论】:
标签: java