Duration duration = Duration.between(LocalDateTime.now(), localDateTime);为什么结果不对
时间: 2023-06-26 10:04:49 浏览: 106
Java中使用period和duration计算时间差
`.between()`方法计算的是两个时间点之间的时长,并不考虑日期。因此,你需要使用`Duration.between()`方法的参数都是`Instant`类型的,而不是`LocalDateTime`类型的。
你可以将`LocalDateTime`转换为`Instant`,然后再计算时长。例如:
```
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Duration duration = Duration.between(Instant.now(), instant);
```
这样计算出来的`duration`表示的是当前时间和`localDateTime`之间的时长。如果想要反过来计算,即`localDateTime`到当前时间的时长,只需要交换`Instant`对象的顺序即可:
```
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Duration duration = Duration.between(instant, Instant.now());
```
阅读全文