Java 中 String 转 LocalDateTime 出现错误
场景
在 Java 中使用 LocalDateTime
解析 String
失败,代码如下
final LocalDateTime result = LocalDateTime.parse("2000-01-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
log.info("result: {}", result);
然后抛出了异常
java.time.format.DateTimeParseException: Text '2000-01-01' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2000-01-01 of type java.time.format.Parsed
吾辈知道使用 LocalDate
可以解析,难道 LocalDateTime
就不能转换 yyyy-MM-dd
这种格式的字符串么?
吾辈已经找到了解决方法,同时也把这个问题整理成了一篇 记录,同时欢迎来吾辈的博客玩 https://blog.rxliuli.com/。
下面是这个问题找到的解决方法,以及吾辈最后的选择
解决
先转换为 LocalDate 再二次转换
吾辈首先找到了一种笨方法
LocalDate
LocalDate
转换为LocalDateTime
。使用 DateTimeFormatter 先解析,然后转换为 LocalDateTime
DateTimeFormatter.ISO_DATE
解析文本并得到TemporalAccessor
对象temporalAccessor.get
方法获取指定属性LocalDateTime.of
构造一个LocalDateTime
对象secureGet
是吾辈自定义的一个工具方法,具体看下面的代码使用 DateTimeFormatterBuilder 构建器
吾辈在 StackOverflow 找到了一个好的方法
DateTimeFormatterBuilder
构建DateTimeFormatter
对象LocalDateTime.parse
进行解析最后一种方法满足了吾辈的需求,所以,也便是在这里记录一下啦