【发布时间】:2018-03-16 14:22:54
【问题描述】:
我需要解析一个字段,该字段有时作为日期给出,有时作为日期/时间给出。是否可以使用 Java 8 time API 为此使用单一数据类型?
目前,我尝试使用 LocalDateTime ,但用于以下调用 LocalDateTime.parse("1986-04-08", DateTimeFormatter.ofPattern("yyyy-MM-dd"))
我得到一个
java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 1986-04-08 of type java.time.format.Parsed
这是一些通用解析器的一部分,它接受日期/日期时间解析模式作为配置选项。所以例如使用硬编码解析模式的以下解决方案
if ("yyyy-MM-dd".equals(pattern)) {
LocalDate.parse(value, DateTimeFormatter.ofPattern("yyyy-MM-dd"))).atStartOfDay()
}
不适合我。
欢迎任何其他建议如何以干净的方式对其进行编码。
【问题讨论】:
-
LocalDate.parse("1986-04-08", DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();