我想知道两次当地约会之间的时间。我使用了下面的代码:
LocalDate startDate = LocalDate.of(2000, 4, 30);
long noOfHours = startDate.until(LocalTime.now(), ChronoUnit.HOURS);
System.out.println(noOfHours);
我有以下错误:
Exception in thread "main" java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 13:44:53.095819600 of type java.time.LocalTime
at java.base/java.time.LocalDate.from(LocalDate.java:397)
at java.base/java.time.LocalDate.until(LocalDate.java:1645)
at BirthDay.App.main(App.java:36)
2条答案
按热度按时间mf98qq941#
错误1
正如例外情况所述:您需要一致的界限值,
LocalTime
没有日/月/年成分可与LocalDate
```LocalDate startDate = LocalDate.of(2000, 4, 30);
long noOfHours = startDate.until(LocalTime.now(), ChronoUnit.HOURS);
// >> DateTimeException: Unable to obtain LocalDate from java.time.LocalTime
LocalDate startDate = LocalDate.of(2000, 4, 30);
long noOfHours = startDate.until(LocalDate.now(), ChronoUnit.HOURS);
// >> UnsupportedTemporalTypeException: Unsupported unit: Hours
LocalDateTime startDate = LocalDateTime.of(2000, 4, 30, 0, 0, 0);
long noOfHours = startDate.until(LocalDateTime.now(), ChronoUnit.HOURS);
System.out.println(noOfHours); // 185793
ukdjmx9f2#
注意
LocalDate
没有时间成分,并且LocalTime
没有日期组件。因此,您的代码试图计算2000-04-30(未指定时间)和当前本地时间(未指定日期)之间的小时数。看到问题了吗?你的意思可能是,
从今天的当地时间到那天开始的2000-04-30(或那天的其他时间),一共有多少小时?
此计算需要两个“日期+时间”,而不是一个日期和一个时间。我们对此表示赞同
LocalDateTime
.注
LocalDateTime.now()
及atStartOfDay
,返回LocalDateTime
S如果您想在2000-04-30使用其他时间,请使用
startDate.atTime(...)
,或创建一个LocalDateTime
首先,例如。