Java从LocalDateTime Bar中减去LocalDateTime foo

Jon*_*612 7 java time datetime casting date

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

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

我对java很新,为了简单起见,我希望能够将它保持在大致相同的布局中,而不是必须从秒等转换.

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

Period diff = new Period(start, end);
Run Code Online (Sandbox Code Playgroud)

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

我的问题实际上只是以可接受的格式得到它,正如我所说,我对java和对象方向整体都是新手,所以请不要嘲笑我这个看似简单的问题.

谢谢,

强尼

Oli*_*ire 18

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

你应该检查java.time.Duration课程.

LocalDateTime from = ... ;
LocalDateTime to = ... ;
Duration duration = Duration.between(from, to);
Run Code Online (Sandbox Code Playgroud)

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

LocalDateTime from = ... ;
LocalDateTime to = ... ;
Period period = Period.between(from.toLocalDate(), to.toLocalDate());
Run Code Online (Sandbox Code Playgroud)


Men*_*ild 6

为什么不直接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);
Run Code Online (Sandbox Code Playgroud)

另请参阅Joda-TimeAPI.你不需要施展DateTime.