Java 从 LocalDateTime Bar 中减去 LocalDateTime foo

2022-09-03 16:52:09

我知道这可能是一个非常愚蠢的问题,但是我想知道是否有一种方法可以从另一个日期时间减去本地日期时间,或者如果没有,则将localDateTime转换为日期时间,然后从那里减去?

我需要能够计算出记录 foo 的开始和记录栏的开始之间的日期时差(这也是 Foo 的结束)

我对Java相当陌生,为了简单起见,我希望能够将其保持在大致相同的布局中,而不必从秒等转换。

如果添加和减去LocalDateTime不是一个选项,我知道一旦我进入dateTime,我就可以使用以下方法减去它们:

Period diff = new Period(start, end);

由于数据的目的,我需要同时保留日期和时间才能使其正常工作,并且如前所述,我希望保持相当简单,因此无需在秒之间转换回日期。

我的问题实际上只是以一种可接受的格式获得它,正如我所说,我对Java和整个面向对象相当陌生,所以请不要嘲笑我这个看似简单的问题。

谢谢

强尼


答案 1

这个问题是关于Joda-Time的,而不是关于Java 8的。这个问题并不是很清楚。无论如何,这个答案是关于Java 8的,因此没有直接回答这个问题。虽然我认为这是一个合适的答案,如果有人想使用Java 8代替。

您可能应该检查 java.time.Duration 类。

LocalDateTime from = ... ;
LocalDateTime to = ... ;
Duration duration = Duration.between(from, to);

如果你真的想获得一个,它仍然相当容易:Period

LocalDateTime from = ... ;
LocalDateTime to = ... ;
Period period = Period.between(from.toLocalDate(), to.toLocalDate());

答案 2

为什么不直接以这种方式用作参数类型:LocalDateTime

LocalDateTime start = new LocalDateTime(2016, 10, 4, 17, 45);
LocalDateTime end = LocalDateTime.now();
PeriodType ptype = PeriodType.yearMonthDayTime();
Period diff = new Period(start, end, ptype);

另请参阅Joda-Time的API。您不需要强制转换为 。DateTime