如何使用 LocalDateTime.parse(...) 解析 ISO 日期

dea*_*mon 4 java datetime iso java-time localdatetime

我想解析这样的日期字符串2011-11-30

LocalDateTime.parse("2011-11-30", DateTimeFormatter.ISO_LOCAL_DATE)
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

java.time.format.DateTimeParseException: Text '2011-11-30' could not be parsed:
Unable to obtain LocalDateTime from TemporalAccessor
Run Code Online (Sandbox Code Playgroud)

如果我传递一个日期时间字符串,一切都按预期工作:

LocalDateTime.parse("2011-11-30T23:59:59", DateTimeFormatter.ISO_LOCAL_DATE_TIME)
Run Code Online (Sandbox Code Playgroud)

如何将日期解析为2011-11-30LocalDateTime(具有默认时间)?

Ivo*_*ori 6

正如@JB Nizet 所建议的,以下工作

LocalDate localDate = LocalDate.parse("2011-11-30", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDateTime localDateTime = localDate.atTime(23, 59, 59);
System.out.println(localDateTime); // 2011-11-30T23:59:59
Run Code Online (Sandbox Code Playgroud)

如何将 2011-11-30 之类的日期解析为 LocalDateTime(具有默认时间)?

  1. 首先解析它 LocalDate
  2. 使用LocalDateTime atTime()方法设置您的默认时间

注意: 使用DateTimeFormatter.ISO_LOCAL_DATE是多余的parse(),见API LocalDate#parse()