Java从LocalDateTime Bar中减去LocalDateTime foo

时间:2016-11-08 15:08:59

标签: java date datetime time casting

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

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

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

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

Period diff = new Period(start, end);

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

我的问题实际上只是以一种可接受的格式获取它,正如我所说,我对java和面向对象整体都是新手,所以请不要因为这个看似简单的问题而嘲笑我。 / p>

谢谢,

强尼

2 个答案:

答案 0 :(得分:14)

问题是关于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());

答案 1 :(得分:5)

为什么不直接使用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);

另见API of Joda-Time。您无需转发DateTime